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
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.Stack;
import java.util.StringTokenizer;


public class Main {
    static class T{
    
    int s;
    int e;
    public T(int s, int e){
        this.s=s;
        this.e=e;
    }
}

    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new PrintWriter(System.out));
        
        //int n = Integer.parseInt(br.readLine());
        int n = Integer.parseInt(br.readLine());
        int[] s = new int[n];
        int[] e = new int[n];
        T[] L = new T[n];
        for(int i=0;i<n;i++){
            String[] in = br.readLine().split(" ");
            s[i] = Integer.parseInt(in[0]);
            e[i] = Integer.parseInt(in[1]);
            L[i] = new T(s[i],e[i]);
        }
        
        Arrays.sort(L, new Comparator<T>(){

            @Override
            public int compare(T x, T y) {
                if(x.e < y.e)   return -1;
                if(x.e == y.e)  return x.s-y.s;
                return 1;
            }
        });
        
        int i,j;
        i=0;
        //System.out.println(L[0].s+" "+L[0].e);
        int cnt = 1;
        for (j = 1; j < n; j++)
        {
          // If this activity has start time greater than or equal to the finish
          // time of previously selected activity, then select it
          if (L[j].s > L[i].e)
          {
              //System.out.println(L[j].s+" "+L[j].e);
              cnt+=1;
              i = j;
          }
        }
        
        System.out.println(cnt);
        bw.close();
    }

    
}
