class RangeBIT: def __init__(self,N,indexed): #0-indexed or 1-indexed 指定可能 self.bit1 = [0] * (N+2) self.bit2 = [0] * (N+2) self.mode = indexed def bitadd(self,a,w,bit): #aにwを加える(1-origin) x = a while x <= (len(bit)-1): bit[x] += w x += x & (-1 * x) def bitsum(self,a,bit): #ind 1~aまでの和を求める ret = 0 x = a while x > 0: ret += bit[x] x -= x & (-1 * x) return ret def add(self,l,r,w): #半開区間[l,r)にwを加える l = l + (1-self.mode) r = r + (1-self.mode) self.bitadd(l,-1*w*l,self.bit1) self.bitadd(r,w*r,self.bit1) self.bitadd(l,w,self.bit2) self.bitadd(r,-1*w,self.bit2) def sum(self,l,r): #半開区間[l,r)の区間和 l = l + (1-self.mode) r = r + (1-self.mode) ret = self.bitsum(r,self.bit1) + r * self.bitsum(r,self.bit2) ret -= self.bitsum(l,self.bit1) + l * self.bitsum(l,self.bit2) return ret import sys N,M = map(int,input().split()) BitSum = RangeBIT(M,0) BitLR = RangeBIT(M,0) ApLR = [] for i in range(N): A,L,R = map(int,input().split()) L -= 1 R -= 1 BitSum.add(i,i+1,A) ApLR.append( (A,i,L,R) ) BitLR.add(L,R+1,1) ans = 0 for i in range(N): A,p,L,R = ApLR[i] ans += (R-L+1) * A - BitSum.sum(L,R+1) #print (ans,file=sys.stderr) Q = int(input()) for _ in range(Q): i,Y,U,V = map(int,input().split()) i -= 1 Y -= 1 U -= 1 V -= 1 # 削除 A,p,L,R = ApLR[i] BitLR.add(L,R+1,-1) ans -= (R-L+1) * A - BitSum.sum(L,R+1) #print ((R-L+1) * A - BitSum.sum(L,R+1),file=sys.stderr) ans -= -1 * BitLR.sum(p,p+1) * A #print (-1 * BitLR.sum(p,p+1) * A,file=sys.stderr) BitSum.add(p,p+1,-A) # 追加 ApLR[i] = (A,Y,U,V) A,p,L,R = ApLR[i] BitLR.add(L,R+1,1) ans += (R-L+1) * A - BitSum.sum(L,R+1) #print ((R-L+1) * A - BitSum.sum(L,R+1),file=sys.stderr) ans += -1 * BitLR.sum(p,p+1) * A #print (-1 * BitLR.sum(p,p+1) * A,file=sys.stderr) BitSum.add(p,p+1,A) print (ans)