include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
using namespace std;
typedef pair[HTML_REMOVED]PII;//first存储左端点,second存储右端点
const int N=100010;
int n;
vector[HTML_REMOVED] segs;//存储//pair排序会先默认先将左端点从小到大排序
void merge(vector[HTML_REMOVED]segs)
{
vector[HTML_REMOVED] res;//合并之后的结果
sort(segs.begin(),segs.end());
int st=-2e9,ed=2e9;//最开始没有遍历区间时的左右极限
for(auto seg:segs)//seg是每次遍历新的区间,segs是将区间遍历后存储的大区间
if(ed<seg.first)//说明当前遍历的区间和前面扥区间没有交集,说明找到了一个新的区间
{
if(st!=-2e9)res.push_back({st,ed});
st=seg.first,ed=seg.second;
}
else ed=max(ed,seg.second);//如果有多个区间取并集的话,就去那个最大的右端点
if(st!=-2e9)res.push_back({st,ed});
segs=res;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
int l,r;
cin>>l>>r;
segs.push_back({l,r});//每次将新区间的左右端点储存
}
merge(segs);
cout<<segs.size()<<endl;
return 0;
}