合并区间
#include <bits/stdc++.h>

using namespace std;

int n,l,r;
typedef pair<int,int> P;
vector<P> segs;
const int INF=-2e9;

void merge(vector<P> &segs){//合并函数 
	vector<P> ans;
	sort(segs.begin(),segs.end());//排序,pair先比first再second 
	
	int st=INF,ed=INF;//初始化设为比无穷小 
	for(auto seg:segs){//遍历区间
		if(ed<seg.first){//如果两邻近区间不相交
			if(st!=INF) ans.push_back({st,ed});//现区间结束记录,但如果Seg是第一个st还是初始化要排除 
			st=seg.first, ed=seg.second;//替换现区间 
		}else ed=max(ed,seg.second);//如果两邻近区间有交集 
	}
	if(st!=INF)ans.push_back({l,r});//最后,最后一个区间要手动压入 
	segs=ans;
}
int main(int argc, char** argv) {
	cin>>n;
	for(int i=0;i<n;i++){
		scanf("%d%d",&l,&r);
		segs.push_back({l,r});//记录区间 
	}
	merge(segs);//合并函数 ,Seg引用&
	cout<<segs.size()<<endl;
	return 0;
}