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>
typedef struct entry {
  int start, finish;
} et;
void quicksort(int d, int c, et a[]) {
  int i1, j1;
  et gt, tg;
  if (d >= c) return;
  srand(time(NULL));
  gt = a[d + rand() % (c - d + 1)];
  i1 = d;
  j1 = c;
  while (i1 <= j1) {
    while (a[i1].finish < gt.finish) i1++;
    while (a[j1].finish > gt.finish) j1--;
    if (i1 <= j1) {
      if (i1 < j1) {
        tg = a[i1];
        a[i1] = a[j1];
        a[j1] = tg;
      }
      i1++;
      j1--;
    }
  }
  quicksort(d, j1, a);
  quicksort(i1, c, a);
}
int fin(int d, int c, int time, et a[]) {
  int g, v = -1;
  while (d <= c) {
    g = (d + c) / 2;
    if (a[g].finish < time) {
      v = g;
      d = g + 1;
    } else
      c = g - 1;
  }
  return v;
}
int main() {
  int vt, n, i, re[500001];
  et a[500001];
  scanf("%d", &n);
  for (i = 0; i < n; i++) scanf("%d%d", &a[i].start, &a[i].finish);
  quicksort(0, n - 1, a);
  re[0] = 1;
  for (i = 1; i < n; i++) {
    vt = fin(0, i - 1, a[i].start, a);
    if (vt == -1)
      re[i] = re[i - 1];
    else
      re[i] = (re[i - 1] > re[vt] + 1 ? re[i - 1] : re[vt] + 1);
  }
  printf("%d", re[n - 1]);
  return 0;
}
