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.util.*;
import java.math.*;

/**
 *
 * @author sarthak
 */
public class testinground_B {
     public static  class P implements Comparable {
    int a, z;
    public P(int a, int z) {
        this.a = a;
        this.z = z;
    }
    public int compareTo(Object obj) {
        P l = (P) obj;
        if (this.a == l.a){
            if (this.z == l.z) return 0;
            return (this.z < l.z)? -1: 1;
        }
        return (this.a < l.a)? -1: 1;
    }
    }
    
    public static void main(String[] args)
    {
        Scanner s=new Scanner(System.in);
        int n=s.nextInt();
        P[] ar=new P[n];
        for(int i=0;i<n;i++)
        {
            int l=s.nextInt();int r=s.nextInt();
            P p=new P(l, r);
            ar[i]=p;
        }
        Arrays.sort(ar);
        int et=ar[0].z;
        int an1=1;
        for(int i=1;i<n;i++)
        {
            if(ar[i].a>et)
            {
                et=ar[i].z;an1++;
            }
        }
        
        int st=ar[n-1].a;
        int an2=1;
        for(int i=n-2;i>=0;i--)
        {
            if(ar[i].z<st)
            {
                st=ar[i].a;an2++;
                
            }
        }
        System.out.println(Math.max(an1,an2));
       
    }
    
}
