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 segment {
  int32_t l, r;
};
std::istream& operator>>(std::istream& is, segment& s) {
  return is >> s.l >> s.r;
}
bool operator<(const segment& lhs, const segment& rhs) { return lhs.r < rhs.r; }
int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
  size_t n;
  std::cin >> n;
  std::vector<segment> segments(n);
  for (size_t i = 0; i < n; ++i) {
    std::cin >> segments[i];
  }
  sort(segments.begin(), segments.end());
  int32_t last = 0;
  size_t result = 0;
  for (const segment& s : segments) {
    if (s.l > last) {
      last = s.r;
      result += 1;
    }
  }
  std::cout << result << '\n';
}
