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.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class B {
	int n;
	ArrayList<Pair> orders;
	class Pair implements Comparable<Pair>{
		int l,r;

		@Override
		public int compareTo(Pair arg0) {			
			return Integer.compare(r, arg0.r);
		}
	}
	void readInput() throws NumberFormatException, IOException{
		//BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		orders = new ArrayList<Pair>(n);
		for(int i=0; i<n; i++){
			Pair p = new Pair();
			p.l = sc.nextInt();
			p.r = sc.nextInt();
			orders.add(p);
		}
	}
	
	void solve(){
		Collections.sort(orders);
		int end = -1;
		int nr = 0;
		for(Pair p:orders){
			if (p.l > end){				
				end = p.r;
				nr++;
			}
		}
		System.out.println(nr);
	}

	public static void main(String[] args) throws NumberFormatException, IOException {
		B a = new B();
		a.readInput();
		a.solve();
	}

}
