#include #include #include using namespace std; struct dat{ long s,b,w,len; }; dat op(dat a,dat b){return(dat){a.s+b.s,a.b+b.b,a.w+b.w,a.len+b.len};} dat e(){return(dat){0L,0L,0L,0};} dat mp(long f,dat x) { x.w+=x.len*f; x.s+=x.b*f; return x; } long cmp(long f,long g){return f+g;} long id(){return 0L;} int N,M; int A[2<<17],L[2<<17],R[2<<17],pos[2<<17]; int B[2<<17]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>N>>M; long P=0; for(int i=0;i>A[i]>>L[i]>>R[i]; L[i]--; P+=(long)A[i]*(R[i]-L[i]); pos[i]=i; } vectorinit(M,(dat){0L,0L,0L,1}); for(int i=0;iseg(init); for(int i=0;i>Q; for(;Q--;) { int x,y,u,v;cin>>x>>y>>u>>v; x--,y--,u--; P-=(long)A[x]*(R[x]-L[x]); seg.apply(L[x],R[x],-1); { auto t=seg.get(pos[x]); t.b=0; t.s=0; seg.set(pos[x],t); } L[x]=u,R[x]=v;pos[x]=y; P+=(long)A[x]*(R[x]-L[x]); seg.apply(L[x],R[x],1); { auto t=seg.get(pos[x]); t.b=A[x]; t.s=t.b*t.w; seg.set(pos[x],t); } cout<