A restaurant received n orders for the rental. Each rental order reserve the restaurant for a continuous period of time, the i-th order is characterized by two time values — the start time li and the finish time ri (li ≤ ri).

Restaurant management can accept and reject orders. What is the maximal number of orders the restaurant can accept?

No two accepted orders can intersect, i.e. they can't share even a moment of time. If one order ends in the moment other starts, they can't be accepted both.

Input

The first line contains integer number n (1 ≤ n ≤ 5·105) — number of orders. The following n lines contain integer values li and ri each (1 ≤ li ≤ ri ≤ 109).

Output

Print the maximal number of orders that can be accepted.

Examples

Input

2
7 11
4 7


Output

1


Input

5
1 2
2 3
3 4
4 5
5 6


Output

3


Input

6
4 8
1 5
4 7
2 5
1 3
6 8


Output

2
#include <bits/stdc++.h>
struct lr {
  long long l;
  long long r;
} a[500001], c[500001];
void merge(struct lr a[], int i, int m, int j) {
  int p, q, r;
  p = i;
  q = m + 1;
  r = i;
  while (p <= m && q <= j) {
    if (a[p].r <= a[q].r) {
      c[r] = a[p];
      p++;
    } else {
      c[r] = a[q];
      q++;
    }
    r++;
  }
  while (p <= m) {
    c[r] = a[p];
    p++;
    r++;
  }
  while (q <= j) {
    c[r] = a[q];
    q++;
    r++;
  }
  for (r = i; r <= j; r++) a[r] = c[r];
}
void mergesort(struct lr a[], int i, int j) {
  int m;
  if (i == j) return;
  m = i + (j - i) / 2;
  mergesort(a, i, m);
  mergesort(a, m + 1, j);
  merge(a, i, m, j);
}
int main() {
  int n, i;
  int t;
  long long b;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%lld %lld", &a[i].l, &a[i].r);
  }
  mergesort(a, 1, n);
  b = a[1].r;
  t = 1;
  for (i = 1; i <= n; i++) {
    if (a[i].l > b) {
      t++;
      b = a[i].r;
    }
  }
  printf("%d", t);
}
