#include #define ll long long using namespace std; #define fi first #define sc second #define pii pair #define pdd pair #define pb push_back #define umap unordered_map #define mset multiset #define pq priority_queue #define ull unsigned long long #define i128 __int128 #define ld long double #define fixs fixed<>1; tr[u].ls=New(tr[u].l,mid); } if(!tr[u].rs){ int mid=(tr[u].l+tr[u].r)>>1; tr[u].rs=New(mid+1,tr[u].r); } int k=tr[u].tag; tr[u].tag=inf,tr[tr[u].ls].cov(k),tr[tr[u].rs].cov(k); } void upd(int u,int l,int r,int k){ if(tr[u].tag!=inf) pushdown(u); if(ir(l,r,tr[u].l,tr[u].r)) tr[u].cov(k); else if(!ofr(l,r,tr[u].l,tr[u].r)) upd(tr[u].ls,l,r,k),upd(tr[u].rs,l,r,k),pushup(u); } node query(int u,int l,int r){ if(tr[u].tag!=inf) pushdown(u); if(ir(l,r,tr[u].l,tr[u].r)) return tr[u]; else if(!ofr(l,r,tr[u].l,tr[u].r)) return query(tr[u].ls,l,r)+query(tr[u].rs,l,r); else return {-1,-1,-1,-1,-1,-1,-1,-1,-1}; } }sgt; int n,q; void solve(){ cin>>n>>q,sgt.init(n); while(q--){ ll l,r; cin>>l>>r,l++,r++,sgt.upd(1,l,r,1); cout<<(int)sgt.query(1,1,n).maxx<>t; while(t--) solve(); return 0; } /* Samples input: output: THINGS TODO: 检查freopen,尤其是后缀名 检查空间 检查调试语句是否全部注释 */