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.*;
import java.util.*;
public class Rental
{
 public static void main(String args[])
 {
   InputStream inputstream = System.in;
   OutputStream outputstream = System.out;
   InputReader in = new InputReader(inputstream);
   PrintWriter out = new PrintWriter(outputstream);
   TaskA solve = new TaskA();
   solve.solver(1,in,out);
   out.close();
  }
}
 class TaskA
{
  public void solver(int testnumber,InputReader in,PrintWriter out)
 {
   int n = in.nextInt();
   Node s[] = new Node[n];
   for(int i=0;i<n;++i)
   {
       s[i] = new Node(in.nextInt(),in.nextInt());
       
   }
   Arrays.sort(s);
   int max =0,ans=0;
   for(int i=0;i<n;++i)
   {
       if(s[i].l>max)
       {
           max=s[i].r;
       ans++;
       }
   }
   System.out.println(ans);
   
  }
 }
  class Node implements Comparable<Node>
  {
      int l;
      int r;
      public Node(int l,int r)
      {
          this.l= l;
          this.r=r;
      }
      public int compareTo(Node o)
      {
          if((l==o.l)&&(r==o.r))
           return 0;
           return r<o.r||r==o.r&&l>o.l?-1:1;
          
      }
  }
 class InputReader
 {
   BufferedReader  reader;
   StringTokenizer tokenizer;
   public InputReader(InputStream stream)
   {
       reader = new BufferedReader(new InputStreamReader(stream));
       tokenizer =null;
       
   }
   public String next()
   {
       while(tokenizer==null||!tokenizer.hasMoreTokens())
       {
           try
           {
               tokenizer = new StringTokenizer(reader.readLine());
               
           }
           catch(IOException e)
                   {
                       throw new RuntimeException(e);
                   }
       }
       return tokenizer.nextToken();
   }
   public int nextInt()
   {
       return Integer.parseInt(next());
   }
 }

