#include #define maxn 100005 #define ull unsigned long long using namespace std; const ull block=62; int n,L[maxn],R[maxn],ans,blo[maxn],id[maxn],blol[maxn],blor[maxn]; bitsetf;ull dp[maxn],czs[66],mod; signed main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n;for(int i=1;i<=n;++i)cin>>L[i]>>R[i]; memset(blol,-1,sizeof blol); for(int i=0;i<=100000;++i){ blo[i]=i/(block); id[i]=i%(block); if(blol[blo[i]]==-1)blol[blo[i]]=i; blor[blo[i]]=i; } czs[0]=1ull;for(int i=1;i<=63;++i)czs[i]=czs[i-1]*2ull; dp[blo[0]]=czs[id[0]]; for(int i=1;i<=n;++i){ bool ntt=1; for(int j=R[i];j<=blor[blo[R[i]]];++j)if(dp[blo[j]]&czs[id[j]]){dp[blo[j]]^=czs[id[j]];ntt=0;break;} for(int j=id[100000]+1;j<=block;++j) if(dp[blo[100000]]&czs[j]) dp[blo[100000]]^=czs[j]; if(ntt){ for(int k=blo[R[i]]+1;k<=blo[100000];++k){ if(dp[k]){ for(int q=0;q<=block;++q){ if(dp[k]&czs[q]){ dp[k]-=czs[q]; break; } } if(k==blo[100000]) for(int j=id[100000]+1;j<=block;++j) if(dp[blo[100000]]&czs[j]) dp[blo[100000]]^=czs[j]; break; } } } for(int j=blo[R[i]-1]-1;j>=blo[L[i]]+1;--j){ if(dp[j]&czs[block])dp[j+1]|=1; dp[j]>>=1; for(int jj=id[blor[j]]+1;jj<=block;++jj) if(dp[j]&czs[jj]) dp[j]^=czs[jj]; } ull res=0; for(int j=L[i];j<=blor[blo[L[i]]];++j)if(dp[blo[L[i]]]&czs[id[j]])res+=czs[id[j]]; dp[blo[L[i]]]+=res+czs[id[L[i]]]; if(blo[L[i]]==blo[100000]) for(int j=id[100000]+1;j<=block;++j) if(dp[blo[100000]]&czs[j]) dp[blo[100000]]^=czs[j]; } for(int i=blo[0];i