#include #include using namespace std; using namespace atcoder; using ll = long long; template struct Lazy_BIT { int n; vector bit[2]; Lazy_BIT(int n_) { init(n_); } void init(int n_) { n = n_ + 1; for (int p = 0; p < 2; p++) bit[p].assign(n, 0); } void add_sub(int p, int i, T x) { for (int idx = i; idx < n; idx += (idx & -idx)) { bit[p][idx] += x; } } void add(int l, int r, T x) { // [l,r) に加算 add_sub(0, l, -x * (l - 1)); add_sub(0, r, x * (r - 1)); add_sub(1, l, x); add_sub(1, r, -x); } T sum_sub(int p, int i) { T s(0); for (int idx = i; idx > 0; idx -= (idx & -idx)) { s += bit[p][idx]; } return s; } T sum(int i) { return sum_sub(0, i) + sum_sub(1, i) * i; } }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector a(n + 1); for (int i = 1; i <= n; i++) cin >> a[i]; fenwick_tree b1(n + 1); Lazy_BIT b2(n); for (int i = 1; i <= n; i++) b1.add(i, a[i]); int q; cin >> q; ll ans = 0; while (q--) { int x, l, r; ll y; cin >> x >> y >> l >> r; ans += b1.sum(l, r + 1); b2.add(l, r + 1, 1); ans += (y - a[x]) * (b2.sum(x) - b2.sum(x - 1)); b1.add(x, y - a[x]); a[x] = y; cout << ans << '\n'; } }