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

public class Test
{ 
    public static void main( String[] args )
    {
        int total, start, end, count1 = 1, count2 = 0;
        Scanner input = new Scanner(System.in);
        total = input.nextInt();
        meeting[] meetings = new meeting[total];
        for(int i = 0; i < total; i++)
        {
            start = input.nextInt();
            end = input.nextInt();
            meetings[i] = new meeting(start, end);
        }
        Arrays.sort(meetings);
        for(int i = 1; i < total; i++)
        {
            if(meetings[i].start > meetings[count2].end)
            {
                count1++;
                count2 = i;
            }
            else if(meetings[i].end < meetings[count2].end)
                count2 = i;
        }
    
        System.out.println(count1);
    } 
}

class meeting implements Comparable<meeting>
{

    int start, end, total;

    public meeting( int x, int y )
    {
        start = x;
        end = y;
        total = start + end;
    }

    @Override
    public int compareTo( meeting x )
    {
        if( this.total < x.total )
        {
            return -1;
        }
        else if( this.total == x.total )
        {
            if( this.start < x.start )
            {
                return -1;
            }
            else if(this.start == x.start)
                return 0;
        }
        return 1;
    }
}