#line 1 "a.cpp" #include #include #include using namespace std; #line 2 "/home/kotatsugame/library/datastructure/dualsegtree.cpp" #include template struct dualsegtree{ using F=function; const F lazycalcfn,updatefn; int n; T lazydefvalue; vectordat,lazy; vectorlazyflag; dualsegtree(int n_=0,T defvalue=0, const F lazycalcfn_=[](T a,T b){return a+b;}, const F updatefn_=[](T a,T b){return a+b;}, T lazydefvalue_=0 ):lazydefvalue(lazydefvalue_), lazycalcfn(lazycalcfn_),updatefn(updatefn_) { n=1; while(n&v) { for(int i=0;i0) { i=(i-1)/2; if(lazyflag[i])ret=updatefn(ret,lazy[i]); } return ret; } }; #line 6 "a.cpp" int N,M; long B[1<<17]; vectorE[1<<17]; int R[1<<17]; main() { cin>>N>>M; for(int i=0;i>B[i]; if(i%2)B[i]=-B[i]; R[i]=-1; } for(int i=0;i>L>>R; L--; E[L].push_back(R); } for(int i=0;iP(N,0,[](long a,long b){return a+b;},[](long a,long b){return a+b;}); P.copy(vector(B,B+N)); for(int i=0;i