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;		
	}
}