#include #include #include #include #include #include #include #include "math.h" using namespace std; typedef long long ll; static const int SIZE = 1 << 17; class StarrySkyTree { public: vector segMax; vector segAdd; StarrySkyTree() { segMax.resize(2 * SIZE + 1, 0); segAdd.resize(2 * SIZE + 1, 0); } void add(int a, int b, ll x, int k = 0, int l = 0, int r = SIZE) { if (r <= a || b <= l) return; if (a <= l && r <= b) { segAdd[k] += x; return; } add(a, b, x, k * 2 + 1, l, (l + r) / 2); add(a, b, x, k * 2 + 2, (l + r) / 2, r); segMax[k] = max(segMax[k * 2 + 1] + segAdd[k * 2 + 1], segMax[k * 2 + 2] + segAdd[k * 2 + 2]); } ll getMax(int a, int b, int k = 0, int l = 0, int r = SIZE) { if (r <= a || b <= l) return 0; if (a <= l && r <= b) return (segMax[k] + segAdd[k]); ll left = getMax(a, b, k * 2 + 1, l, (l + r) / 2); ll right = getMax(a, b, k * 2 + 2, (l + r) / 2, r); return (max(left, right) + segAdd[k]); } }; int main() { ios::sync_with_stdio(false); cin.tie(0); int N, M; cin >> N; StarrySkyTree sst; for (int i = 0; i < N - 1; i++) { ll t; cin >> t; sst.add(i, i + 1, t - 3 * i); } cin >> M; for (int i = 0; i < M; i++) { int l, r, d; cin >> l >> r >> d; sst.add(l - 1, r, d); cout << max(0LL, sst.getMax(0, N - 1)) + 3 * (N - 1) << endl; } }