#include #include using namespace std; using namespace atcoder; istream &operator>>(istream &is, modint &a) { long long v; is >> v; a = v; return is; } ostream &operator<<(ostream &os, const modint &a) { return os << a.val(); } istream &operator>>(istream &is, modint998244353 &a) { long long v; is >> v; a = v; return is; } ostream &operator<<(ostream &os, const modint998244353 &a) { return os << a.val(); } istream &operator>>(istream &is, modint1000000007 &a) { long long v; is >> v; a = v; return is; } ostream &operator<<(ostream &os, const modint1000000007 &a) { return os << a.val(); } typedef long long ll; typedef vector> Graph; typedef pair pii; typedef pair pll; #define FOR(i,l,r) for (int i = l;i < (int)(r); i++) #define rep(i,n) for (int i = 0;i < (int)(n); i++) #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define my_sort(x) sort(x.begin(), x.end()) #define my_max(x) *max_element(all(x)) #define my_min(x) *min_element(all(x)) template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } const int INF = (1<<30) - 1; const ll LINF = (1LL<<62) - 1; const int MOD = 998244353; const int MOD2 = 1e9+7; const double PI = acos(-1); vector di = {1,0,-1,0}; vector dj = {0,1,0,-1}; #ifdef LOCAL # include # define debug(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__) #else # define debug(...) (static_cast(0)) #endif int main(){ cin.tie(0); ios_base::sync_with_stdio(false); ll N, M; cin >> N >> M; fenwick_tree B(M), imos(M + 1); vector A(N); vector C(N); vector L(N), R(N); rep(i, N){ C[i] = i; cin >> A[i]; B.add(C[i], A[i]); cin >> L[i] >> R[i]; L[i]--; imos.add(L[i], 1); imos.add(R[i], -1); } ll ans = 0; rep(i, N) ans += A[i] * (R[i] - L[i]); rep(i, M) ans -= B.sum(i, i + 1) * imos.sum(0, i + 1); int Q; cin >> Q; while(Q--){ ll X, Y, U, V; cin >> X >> Y >> U >> V; X--, Y--, U--; ans -= A[X] * (R[X] - L[X]); ans += B.sum(L[X], R[X]); ans += A[X] * (imos.sum(0, C[X] + 1) - (L[X] <= C[X] && C[X] < R[X])); imos.add(L[X], -1); imos.add(R[X], 1); B.add(C[X], -A[X]); C[X] = Y; L[X] = U; R[X] = V; imos.add(L[X], 1); imos.add(R[X], -1); B.add(C[X], A[X]); ans += A[X] * (R[X] - L[X]); ans -= B.sum(L[X], R[X]); ans -= A[X] * (imos.sum(0, C[X] + 1) - (L[X] <= C[X] && C[X] < R[X])); cout << ans << "\n"; } }