#include using namespace std; typedef long long ll; #define int ll #define ls rt << 1 #define rs rt << 1 | 1 const int N = 5e5 + 7; int n, m, a[N]; int val[N << 2], lazy[N << 2]; inline void pushup(int rt) { val[rt] = max(val[ls], val[rs]); return; } inline void build(int l, int r, int rt) { if (l == r) { val[rt] = a[l]; return; } int mid = (l + r) / 2; build(l, mid, ls); build(mid + 1, r, rs); pushup(rt); } inline void addlazy(int rt, int C) { lazy[rt] += C; val[rt] += C; } inline void pushdown(int rt) { if (lazy[rt]) { addlazy(ls, lazy[rt]); addlazy(rs, lazy[rt]); lazy[rt] = 0; } } inline void update(int L, int R, int C, int l, int r, int rt) { if (L <= l && r <= R) { addlazy(rt, C); return; } int mid = (l + r) / 2; pushdown(rt); if (L <= mid) update(L, R, C, l, mid, ls); if (R > mid) update(L, R, C, mid + 1, r, rs); pushup(rt); return; } signed main() { ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); cin >> n; for (int i = 1; i <= n - 1; i++) cin >> a[i], a[i] += 3 * (n - i); build(1, n, 1); cin >> m; while (m--) { int l, r, d; cin >> l >> r >> d; update(l, r, d, 1, n, 1); cout << val[1] << "\n"; } }