import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
//创建一个集合存储数据
List<Node> xD = new ArrayList<Node>();
Node node;
for(int i = 0;i<n;i++) {
//数据类型的起始值
int a = scanner.nextInt();
int b = scanner.nextInt();
node = new Node(a, b);
//将活动对应的起始和结束时间加入集合
xD.add(node);
}
//对活动时间进行排序,按照末尾时间从小到大的标准
Collections.sort(xD, new NodeCompaator());
//Arrays.sort(arr, c);
/*这几行没用,是用来测试排序结果的
* for(int i = 0;i<xD.size();i++) {
System.out.println(xD.get(i).start+","+xD.get(i).end);
}*/
//定义一个中间变量,用于上一个活动的结束值
int begin = 0;
for(int i = 0;i<n;i++) {
//当当前的起始值大于上一个活动的结束值时,符合要求
if(xD.get(i).start>=begin) {
//更新begin的值
begin = xD.get(i).end;
//将该活动进行标记
xD.get(i).mark = 1;
}
}
int count = 0;
for(int i = 0;i<n;i++) {
if(xD.get(i).mark==1) {
count++;
}
}
System.out.println(count);
}
}
//比较类
class NodeCompaator implements Comparator<Node>{
@Override
public int compare(Node a, Node b) {
// TODO Auto-generated method stub
return a.end-b.end;//代表按照结束值从小到大排序
}
}
//节点类
class Node{
//该数据类型包含一个起始值,一个结束值,一个标记,
int start;
int end;
int mark;
public Node() {
}
public Node(int start,int end) {
// TODO Auto-generated constructor stub
this.start = start;
this.end = end;
}
}