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.io.* ;

public class Restaurant 
{
    public static void main(String args[]) throws Exception 
    {
        BufferedReader bro = new BufferedReader(new InputStreamReader(System.in)) ;
        int n = Integer.parseInt(bro.readLine()) ;
        List<Pair> L = new ArrayList<Pair>() ;
        for(int i=0;i<n;i++)
        {
            String[] S = bro.readLine().split(" ") ;
            int a = Integer.parseInt(S[0]) ;
            int b = Integer.parseInt(S[1]) ;
            L.add(new Pair(a,b)) ;

        }
        Collections.sort(L) ;
        int count = 1,end = L.get(0).b ;
        for(int i=1;i<L.size();i++)
        {
            if(end<L.get(i).a)
            {
                count++ ;
                end = L.get(i).b ;
            }
        }
        System.out.println(count) ;

    }
}
class Pair implements Comparable<Pair> 
{
    int a,b ;
    Pair(int a,int b)
    {
        this.a = a; 
        this.b = b ;
    }
    @Override 
    public int compareTo(Pair p)
    {
        return p.b<this.b?1:(p.b>this.b?-1:0) ;
    }
}