#include using namespace std; using ll = long long; template struct ST_SUM{ vectornum; int siz; ST_SUM(int n){ int x = 1; while(n > x) x <<= 1; siz = x; num = vector ((x<<1),0LL); } void Update(int x,T i){ x = x + siz - 1; num[x] = i; while(x != 0){ x = (x-1)/2; num[x] = num[x*2 + 1]+num[x*2 + 2]; } } T Sub_Serch(int n,int m,int k,int l,int r){ if(r <= n || m <= l) return 0; if(n <= l && r <= m) return num[k]; k *= 2; T lx = Sub_Serch(n, m, k+1, l, (r+l)/2); T rx = Sub_Serch(n, m, k+2, (l+r)/2, r); return lx + rx; } T Serch(int n,int m){ return Sub_Serch(n, m+1, 0, 0, siz); } }; template struct ST_CNT{ vectornum; int siz; ST_CNT(int n){ int x = 1; while(n > x) x <<= 1; siz = x; num = vector ((x<<1),0LL); } void sub_update(int n,int m,int k,int l,int r,T x){ if(r <= n || m <= l) return; if(n <= l && r <= m){ num[k] += x; return; } k *= 2; sub_update(n,m,k+1,l,(l+r)/2,x); sub_update(n,m,k+2,(l+r)/2,r,x); return; } void update(int n,int m,T x){ sub_update(n,m+1,0,0,siz,x); return; } T serch(int n){ n += siz-1; T sum = num[n]; while(n != 0){ n = (n-1)/2; sum += num[n]; } return sum; } }; int main(){ int n,m; cin >> n >> m; ST_SUMsum (m); ST_CNTcnt (m); vector>rng (n,vector(2)); vectorrate (n),pos (n); for(int i=0;i> s >> l >> r; l--,r--; rng[i][0] = l,rng[i][1] = r; rate[i] = s; pos[i] = i; sum.Update(i,s); cnt.update(l,r,1); } ll ans = 0; for(int i=0;i> q; for(int i=0;i> x >> y >> l >> r; x--,y--,l--,r--; ll bc = sum.Serch(rng[x][0],rng[x][1]); ll bd = rng[x][1] - rng[x][0] + 1; ans -= bd * rate[x] - bc; cnt.update(rng[x][0],rng[x][1],-1); ll c = cnt.serch(pos[x]); ans += c * rate[x]; sum.Update(pos[x],0); pos[x] = y; sum.Update(pos[x],rate[x]); ll ac = cnt.serch(pos[x]); ans -= ac * rate[x]; rng[x][0] = l,rng[x][1] = r; ll aac = sum.Serch(l,r); ll aad = r - l + 1; ans += rate[x] * aad - aac; cnt.update(l,r,1); cout << ans << endl; } }