#include using namespace std; #if __has_include() #include using namespace atcoder; templateistream &operator>>(istream &is,static_modint &a){long long b;is>>b;a=b;return is;} istream &operator>>(istream &is,modint &a){long long b;cin>>b;a=b;return is;} #endif #ifdef LOCAL #include "debug.h" #else #define debug(...) static_cast(0) #define debugg(...) static_cast(0) #define esper(...) static_cast(0) templateostream &operator<<(ostream &os,const pair&p){os<; templateusing minque=priority_queue,greater>; templatebool chmax(T &a,const T &b){return (abool chmin(T &a,const T &b){return (a>b?(a=b,true):false);} templateistream &operator>>(istream &is,pair&p){is>>p.first>>p.second;return is;} templateistream &operator>>(istream &is,vector &a){for(auto &i:a)is>>i;return is;} templatevoid operator++(pair&a,int n){a.first++,a.second++;} templatevoid operator--(pair&a,int n){a.first--,a.second--;} templatevoid operator++(vector&a,int n){for(auto &i:a)i++;} templatevoid operator--(vector&a,int n){for(auto &i:a)i--;} #define reps(i,a,n) for(int i=(a);i(0) ll myceil(ll a,ll b){return (a+b-1)/b;} template auto vec(const int (&d)[n],const T &init=T()){ if constexpr (id(d,init)); else return init; } void SOLVE(); int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cout<>testcase; for(int i=0;i struct DynamicLazySegmentTree{ private: struct node{ I l,r; node *left,*right; S val; F lazy; node(I l,I r,S val):l(l),r(r),val(val),lazy(id()),left(nullptr),right(nullptr){} void propagate(F f){ val=mapping(f,val,l,r); lazy=composition(f,lazy); } void push(){ I mid=(l+r)/2; if(!left)left=new node(l,mid,e()); if(!right)right=new node(mid,r,e()); left->propagate(lazy); right->propagate(lazy); lazy=id(); } void update(){ val=e(); if(left)val=op(val,left->val); if(right)val=op(val,right->val); } }; node *root; void set(node *v,I k,S x){ if(v->r-v->l==1){ v->val=x; return; } v->push(); I mid=(v->l+v->r)/2; if(kleft)v->left=new node(v->l,mid,e()); set(v->left,k,x); } else{ if(!v->right)v->right=new node(mid,v->r,e()); set(v->right,k,x); } v->update(); } S get(node *v,I k){ if(!v)return e(); if(v->r-v->l==1)return v->val; v->push(); I mid=(v->l+v->r)/2; if(kleft,k); else return get(v->right,k); } void apply(node *v,I lx,I rx,F f){ if(v->r<=lx||rx<=v->l)return; if(lx<=v->l&&v->r<=rx){ v->propagate(f); return; } v->push(); I mid=(v->l+v->r)/2; if(!v->left)v->left=new node(v->l,mid,e()); if(!v->right)v->right=new node(mid,v->r,e()); apply(v->left,lx,rx,f); apply(v->right,lx,rx,f); v->update(); } S prod(node *v,I lx,I rx){ if(!v||v->r<=lx||rx<=v->l)return e(); if(lx<=v->l&&v->r<=rx)return v->val; v->push(); return op(prod(v->left,lx,rx),prod(v->right,lx,rx)); } public: DynamicLazySegmentTree():root(nullptr){} DynamicLazySegmentTree(I l,I r){ root=new node(l,r,e()); } void set(I k,S x){ set(root,k,x); } S get(I k){ return get(root,k); } void apply(I l,I r,F f){ assert(l<=r); apply(root,l,r,f); } S prod(I l,I r){ assert(l<=r); return prod(root,l,r); } S all_prod()const{ return root->val; } }; int op(int x,int y){return max(x,y);} int e(){return 0;} int mapping(int f,int x,int l,int r){return f+x;} int composition(int f,int g){return f+g;} int id(){return 0;} void SOLVE(){ int n; cin>>n; DynamicLazySegmentTreeseg(0,1e9+1000); rep(i,n){ int l,r; cin>>l>>r; seg.apply(l,r,1); } cout<