#include #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; using lint=long long; const long long INF=1LL<<61; template struct interval{ T l,r; interval(){} interval(const T& l,const T& r):l(l),r(r){} bool operator<(const interval& I)const{ return make_tuple(l,r) Sz; set> I; rep(_,q){ interval J; scanf("%lld%lld",&J.l,&J.r); J.r++; auto del=[&](auto it){ Sz.erase(Sz.find((it->r)-(it->l))); I.erase(it); }; auto add=[&](auto J){ Sz.emplace(J.r-J.l); I.emplace(J); }; while(1){ auto it=I.upper_bound(interval(J.l-1,INF)); if(it==I.end() || J.r<(it->l)) break; J.r=max(J.r,it->r); del(it); } while(1){ auto it=I.lower_bound(J); if(it==I.begin()) break; --it; if((it->r)l); del(it); } add(J); printf("%lld\n",*Sz.rbegin()); } return 0; }