import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int[][] s=new int[n][2];
for(int i=0;i<n;i++) {
s[i][0]=scanner.nextInt();
s[i][1]=scanner.nextInt();
}
/**
* 通过冒泡排序进行排序,将起始为止按从大到小进行排序(此冒泡排序带flag:节省时间降低时间复杂度)
*/
for(int i=0;i<n-1;i++) {
int flag=0;
for(int j=0;j<n-i-1;j++) {
if(s[j][0]>s[j+1][0]) {
flag=1;
int a=s[j][0];
int b=s[j][1];
s[j][0]=s[j+1][0];
s[j][1]=s[j+1][1];
s[j+1][0]=a;
s[j+1][1]=b;
}
if(s[j][0]==s[j+1][0]&&s[j][1]>s[j+1][1]) {
flag=1;
int b=s[j][1];
s[j][1]=s[j+1][1];
s[j+1][1]=b;
}
}
if(flag==0)
break;
}
// /**
// * 上面将顺序排好,下面进行遍历
// */
// for(int i=0;i<n;i++) {
// System.out.println(s[i][0]+" "+s[i][1]);
// }
// /**
// * 输入:n=5;
// 2 4
// 1 3
// 5 7
// 1 8
// 8 8
// 输出:
// 1 3
// 1 8
// 2 4
// 5 7
// 8 8
//
// */
/**
* 下面是主要算法:
* 通过上面排序的主要目的是为了有序进行;一面对下面情况造成重复,难以判断。
* 主要就是将草堆堪称一段线段,通过多次判断进行缩小。
*/
int x=s[0][0];
int y=s[0][1];
int sum=1;
for(int i=1;i<n;i++) {
if(s[i][0]>x&&s[i][0]<=y) {
x=s[i][0];
}
if(s[i][1]>=x&&s[i][1]<y) {
y=s[i][1];
}
if(s[i][0]>y) {
x=s[i][0];
y=s[i][1];
sum++;
}
}
System.out.println(sum);
}
}