#include #include #include #include #include using namespace std; struct dat{ long sum,L,R,M; bool e; }; dat op(dat l,dat r) { if(l.e)return r; if(r.e)return l; dat ret; ret.sum=l.sum+r.sum; ret.L=max(l.L,l.sum+r.L); ret.R=max(r.R,r.sum+l.R); ret.M=max(max(l.M,r.M),max(max(l.R,r.L),l.R+r.L)); ret.e=false; return ret; } dat e(){return(dat){0L,0L,0L,0L,true};} int N,Q; int A[1<<17]; long B[1<<17]; int Op[1<<17]; long T1[1<<17],T2[1<<17]; int main() { cin>>N; vectordv; dv.push_back(0L); for(int i=0;i>A[i]>>B[i]; long t=dv.back()+B[i]; B[i]=t; dv.push_back(t); } cin>>Q; for(int i=0;i>Op[i]>>T1[i]>>T2[i]; T1[i]--; if(Op[i]==1) { dv.push_back(T1[i]); dv.push_back(T1[i]+1); } else { dv.push_back(T1[i]); dv.push_back(T2[i]); } } sort(dv.begin(),dv.end()); dv.erase(unique(dv.begin(),dv.end()),dv.end()); vectorinit(dv.size()-1); int idx=0; for(int i=0;i+1"<=0?init[i].sum:A[idx]; init[i].e=false; } atcoder::segtreeseg(init); for(int i=0;i