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.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.StringTokenizer;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Gerasimov
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static HashMap<Integer, Integer> mas = new HashMap<Integer, Integer>();

    public static void main(String[] args) throws FileNotFoundException, IOException {
        BufferedReader inp = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out);
        StringTokenizer st = new StringTokenizer(inp.readLine());
        int n = Integer.parseInt(st.nextToken());

        long res = 0;
        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(inp.readLine());
            int l = Integer.parseInt(st.nextToken());
            int r = Integer.parseInt(st.nextToken());
            if (mas.containsKey(l)) {
                if (mas.get(l) > r) {
                    mas.replace(l, r);
                }
            } else {
                mas.put(l, r);
            }
        }
        int[] smas = new int[mas.keySet().size()];
        int j = 0;
        for (int i : mas.keySet()) {
            smas[j] = i;
            j++;
        }
        Arrays.sort(smas);
        int l = 0;
        int r = 0;

        for (int i : smas) {
            int x = mas.get(i);
            if (i > r) {
                res++;
                l = i;
                r = x;
            } else {
                if (r>x){
                  r=x;
                }
            }

        }
        out.print(res);
        out.close();
    }

}
