#include using namespace std; mt19937 mt(13770618); int tot=0; struct apple{ int ls,rs,zz,sz,hp; }e[300005]; int lz[300005]; void update(int x){ e[x].sz=e[e[x].ls].sz+e[e[x].rs].sz+1; } void pushdown(int x){ if(!x||!lz[x])return; if(e[x].ls){ e[e[x].ls].zz+=lz[x]; lz[e[x].ls]+=lz[x]; } if(e[x].rs){ e[e[x].rs].zz+=lz[x]; lz[e[x].rs]+=lz[x]; } lz[x]=0; } int rt=0; pairsplit(int ys,int k){ if(!ys)return make_pair(0,0); pushdown(ys); if(e[ys].zz<=k){ auto pi=split(e[ys].rs,k); e[ys].rs=pi.first; update(ys); return make_pair(ys,pi.second); } auto pi=split(e[ys].ls,k); e[ys].ls=pi.second; update(ys); return make_pair(pi.first,ys); } int merg(int x,int y){ if(!x)return y; if(!y)return x; pushdown(x);pushdown(y); if(e[x].hphe)x-=he,wz=e[wz].rs; else if(x==he)break; else wz=e[wz].ls; } return e[wz].zz; } int l[300005],r[300005]; int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;++i)scanf("%d%d",&l[i],&r[i]); for(int i=1;i<=n;++i){ int L=l[i],R=r[i]; int rr=rk(R)+1; if(rr<=e[rt].sz){ delet(kr(rr)); } auto pi=split(rt,L-1); auto ip=split(pi.second,R-1); ++lz[ip.first];++e[ip.first].zz; rt=merg(pi.first,merg(ip.first,ip.second)); inser(L); } printf("%d\n",e[rt].sz); return 0; }