#include <bits/stdc++.h>
const int maxn = 2e5 + 5;
int N, Q, root, cnt;
int A[maxn + 5];
std::vector<std::pair<int, int>> st[maxn + 5];
std::vector<int> ed[maxn + 5];
int id[maxn + 5], ans[maxn + 5];
std::mt19937 rng(time(0));
struct Node {
int p, l, r, key, val, tag, mn, mx;
Node() {
key = 0;
val = 0;
mn = 0;
mx = 0;
l = 0;
r = 0;
p = 0;
tag = 0;
}
Node(int x) {
key = rng();
val = x;
mn = x;
mx = x;
l = 0;
r = 0;
p = 0;
tag = 0;
}
} a[maxn + 5];
void push(int x) {
a[a[x].l].mn += a[x].tag;
a[a[x].r].mn += a[x].tag;
a[a[x].l].mx += a[x].tag;
a[a[x].r].mx += a[x].tag;
a[a[x].l].val += a[x].tag;
a[a[x].r].val += a[x].tag;
a[a[x].l].tag += a[x].tag;
a[a[x].r].tag += a[x].tag;
a[x].tag = 0;
}
void pull(int x) {
a[x].mn = a[x].val;
a[x].mx = a[x].val;
if (a[x].l) {
a[x].mn = std::min(a[x].mn, a[a[x].l].mn);
a[x].mx = std::max(a[x].mx, a[a[x].l].mx);
}
if (a[x].r) {
a[x].mn = std::min(a[x].mn, a[a[x].r].mn);
a[x].mx = std::max(a[x].mx, a[a[x].r].mx);
}
}
void pushall(int x) {
std::vector<int> vec;
while (a[x].p) {
vec.push_back(a[x].p);
x = a[x].p;
}
for (int i = (int)vec.size() - 1; i >= 0; --i) {
push(vec[i]);
}
}
void split(int x, int k, int &l, int &r) {
if (!x) {
l = 0;
r = 0;
return;
}
push(x);
if (a[x].val <= k) {
split(a[x].r, k, a[x].r, r);
a[r].p = 0;
a[a[x].r].p = x;
l = x;
} else {
split(a[x].l, k, l, a[x].l);
a[l].p = 0;
a[a[x].l].p = x;
r = x;
}
pull(x);
}
void merge(int &x, int l, int r) {
push(l), push(r);
if (!l) {
x = r;
return;
}
if (!r) {
x = l;
return;
}
if (a[l].key > a[r].key) {
merge(a[l].r, a[l].r, r);
a[a[l].r].p = l;
x = l;
} else {
merge(a[r].l, l, a[r].l);
a[a[r].l].p = r;
x = r;
}
pull(x);
}
void overlapping_merge(int &x, int l, int r) {
if (!r) {
x = l;
return;
}
if (!l) {
x = r;
return;
}
x = 0;
if (a[l].mn > a[r].mn) std::swap(l, r);
while (r) {
int l1, r1;
split(l, a[r].mn, l1, r1);
merge(x, x, l1);
l = r;
r = r1;
}
merge(x, x, l);
}
int main() {
std::cin >> N;
for (int i = 1; i <= N; ++i)
std::cin >> A[i];
std::cin >> Q;
for (int i = 1; i <= Q; ++i) {
int l, r, x; std::cin >> l >> r >> x;
st[l].push_back({i, x});
ed[r].push_back(i);
}
for (int i = 1; i <= N; ++i) {
for (auto [q, x] : st[i]) {
a[++cnt] = Node(x);
id[q] = cnt;
int l, r;
split(root, x, l, r);
merge(root, l, cnt);
merge(root, root, r);
}
int l, r;
split(root, 0, l, r);
a[l].mn += A[i];
a[l].mx += A[i];
a[l].val += A[i];
a[l].tag += A[i];
a[r].mn -= A[i];
a[r].mx -= A[i];
a[r].val -= A[i];
a[r].tag -= A[i];
overlapping_merge(root, l, r);
for (int q : ed[i]) {
pushall(id[q]);
ans[q] = a[id[q]].val;
}
}
for (int i = 1; i <= Q; ++i)
std::cout << ans[i] << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgpjb25zdCBpbnQgbWF4biA9IDJlNSArIDU7CgppbnQgTiwgUSwgcm9vdCwgY250OwppbnQgQVttYXhuICsgNV07CnN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxpbnQsIGludD4+IHN0W21heG4gKyA1XTsKc3RkOjp2ZWN0b3I8aW50PiBlZFttYXhuICsgNV07CgppbnQgaWRbbWF4biArIDVdLCBhbnNbbWF4biArIDVdOwoKc3RkOjptdDE5OTM3IHJuZyh0aW1lKDApKTsKCnN0cnVjdCBOb2RlIHsKICAgIGludCBwLCBsLCByLCBrZXksIHZhbCwgdGFnLCBtbiwgbXg7CiAgICBOb2RlKCkgewogICAgICAgIGtleSA9IDA7CiAgICAgICAgdmFsID0gMDsKICAgICAgICBtbiA9IDA7CiAgICAgICAgbXggPSAwOwogICAgICAgIGwgPSAwOwogICAgICAgIHIgPSAwOwogICAgICAgIHAgPSAwOwogICAgICAgIHRhZyA9IDA7CiAgICB9CiAgICBOb2RlKGludCB4KSB7CiAgICAgICAga2V5ID0gcm5nKCk7CiAgICAgICAgdmFsID0geDsKICAgICAgICBtbiA9IHg7CiAgICAgICAgbXggPSB4OwogICAgICAgIGwgPSAwOwogICAgICAgIHIgPSAwOwogICAgICAgIHAgPSAwOwogICAgICAgIHRhZyA9IDA7CiAgICB9Cn0gYVttYXhuICsgNV07Cgp2b2lkIHB1c2goaW50IHgpIHsKICAgIGFbYVt4XS5sXS5tbiArPSBhW3hdLnRhZzsKICAgIGFbYVt4XS5yXS5tbiArPSBhW3hdLnRhZzsKICAgIGFbYVt4XS5sXS5teCArPSBhW3hdLnRhZzsKICAgIGFbYVt4XS5yXS5teCArPSBhW3hdLnRhZzsKICAgIGFbYVt4XS5sXS52YWwgKz0gYVt4XS50YWc7CiAgICBhW2FbeF0ucl0udmFsICs9IGFbeF0udGFnOwoKICAgIGFbYVt4XS5sXS50YWcgKz0gYVt4XS50YWc7CiAgICBhW2FbeF0ucl0udGFnICs9IGFbeF0udGFnOwogICAgYVt4XS50YWcgPSAwOwp9Cgp2b2lkIHB1bGwoaW50IHgpIHsKICAgIGFbeF0ubW4gPSBhW3hdLnZhbDsKICAgIGFbeF0ubXggPSBhW3hdLnZhbDsKICAgIGlmIChhW3hdLmwpIHsKICAgICAgICBhW3hdLm1uID0gc3RkOjptaW4oYVt4XS5tbiwgYVthW3hdLmxdLm1uKTsKICAgICAgICBhW3hdLm14ID0gc3RkOjptYXgoYVt4XS5teCwgYVthW3hdLmxdLm14KTsKICAgIH0KICAgIGlmIChhW3hdLnIpIHsKICAgICAgICBhW3hdLm1uID0gc3RkOjptaW4oYVt4XS5tbiwgYVthW3hdLnJdLm1uKTsKICAgICAgICBhW3hdLm14ID0gc3RkOjptYXgoYVt4XS5teCwgYVthW3hdLnJdLm14KTsKICAgIH0KfQoKdm9pZCBwdXNoYWxsKGludCB4KSB7CiAgICBzdGQ6OnZlY3RvcjxpbnQ+IHZlYzsKICAgIHdoaWxlIChhW3hdLnApIHsKICAgICAgICB2ZWMucHVzaF9iYWNrKGFbeF0ucCk7CiAgICAgICAgeCA9IGFbeF0ucDsKICAgIH0KICAgIGZvciAoaW50IGkgPSAoaW50KXZlYy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewogICAgICAgIHB1c2godmVjW2ldKTsKICAgIH0KfSAgCgp2b2lkIHNwbGl0KGludCB4LCBpbnQgaywgaW50ICZsLCBpbnQgJnIpIHsKICAgIGlmICgheCkgewogICAgICAgIGwgPSAwOwogICAgICAgIHIgPSAwOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBwdXNoKHgpOwogICAgaWYgKGFbeF0udmFsIDw9IGspIHsKICAgICAgICBzcGxpdChhW3hdLnIsIGssIGFbeF0uciwgcik7CiAgICAgICAgYVtyXS5wID0gMDsKICAgICAgICBhW2FbeF0ucl0ucCA9IHg7CiAgICAgICAgbCA9IHg7CiAgICB9IGVsc2UgewogICAgICAgIHNwbGl0KGFbeF0ubCwgaywgbCwgYVt4XS5sKTsKICAgICAgICBhW2xdLnAgPSAwOwogICAgICAgIGFbYVt4XS5sXS5wID0geDsKICAgICAgICByID0geDsKICAgIH0KCiAgICBwdWxsKHgpOwp9Cgp2b2lkIG1lcmdlKGludCAmeCwgaW50IGwsIGludCByKSB7CiAgICBwdXNoKGwpLCBwdXNoKHIpOwogICAgaWYgKCFsKSB7CiAgICAgICAgeCA9IHI7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKCFyKSB7CiAgICAgICAgeCA9IGw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmIChhW2xdLmtleSA+IGFbcl0ua2V5KSB7CiAgICAgICAgbWVyZ2UoYVtsXS5yLCBhW2xdLnIsIHIpOwogICAgICAgIGFbYVtsXS5yXS5wID0gbDsKICAgICAgICB4ID0gbDsKICAgIH0gZWxzZSB7CiAgICAgICAgbWVyZ2UoYVtyXS5sLCBsLCBhW3JdLmwpOwogICAgICAgIGFbYVtyXS5sXS5wID0gcjsKICAgICAgICB4ID0gcjsKICAgIH0KCiAgICBwdWxsKHgpOwp9Cgp2b2lkIG92ZXJsYXBwaW5nX21lcmdlKGludCAmeCwgaW50IGwsIGludCByKSB7CiAgICBpZiAoIXIpIHsKICAgICAgICB4ID0gbDsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoIWwpIHsKICAgICAgICB4ID0gcjsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB4ID0gMDsKICAgIGlmIChhW2xdLm1uID4gYVtyXS5tbikgc3RkOjpzd2FwKGwsIHIpOwogICAgd2hpbGUgKHIpIHsKICAgICAgICBpbnQgbDEsIHIxOwogICAgICAgIHNwbGl0KGwsIGFbcl0ubW4sIGwxLCByMSk7CiAgICAgICAgbWVyZ2UoeCwgeCwgbDEpOwogICAgICAgIGwgPSByOwogICAgICAgIHIgPSByMTsKICAgIH0KICAgIG1lcmdlKHgsIHgsIGwpOwp9CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6Y2luID4+IE47CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBOOyArK2kpCiAgICAgICAgc3RkOjpjaW4gPj4gQVtpXTsKCiAgICBzdGQ6OmNpbiA+PiBROwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gUTsgKytpKSB7CiAgICAgICAgaW50IGwsIHIsIHg7IHN0ZDo6Y2luID4+IGwgPj4gciA+PiB4OwogICAgICAgIHN0W2xdLnB1c2hfYmFjayh7aSwgeH0pOwogICAgICAgIGVkW3JdLnB1c2hfYmFjayhpKTsKICAgIH0KCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBOOyArK2kpIHsKICAgICAgICBmb3IgKGF1dG8gW3EsIHhdIDogc3RbaV0pIHsKICAgICAgICAgICAgYVsrK2NudF0gPSBOb2RlKHgpOwoKICAgICAgICAgICAgaWRbcV0gPSBjbnQ7CiAgICAgICAgICAgIGludCBsLCByOwogICAgICAgICAgICBzcGxpdChyb290LCB4LCBsLCByKTsKICAgICAgICAgICAgbWVyZ2Uocm9vdCwgbCwgY250KTsKICAgICAgICAgICAgbWVyZ2Uocm9vdCwgcm9vdCwgcik7CiAgICAgICAgfQoKICAgICAgICBpbnQgbCwgcjsKICAgICAgICBzcGxpdChyb290LCAwLCBsLCByKTsKCgogICAgICAgIGFbbF0ubW4gKz0gQVtpXTsKICAgICAgICBhW2xdLm14ICs9IEFbaV07CiAgICAgICAgYVtsXS52YWwgKz0gQVtpXTsKICAgICAgICBhW2xdLnRhZyArPSBBW2ldOyAgIAoKICAgICAgICBhW3JdLm1uIC09IEFbaV07CiAgICAgICAgYVtyXS5teCAtPSBBW2ldOwogICAgICAgIGFbcl0udmFsIC09IEFbaV07CiAgICAgICAgYVtyXS50YWcgLT0gQVtpXTsKCiAgICAgICAgb3ZlcmxhcHBpbmdfbWVyZ2Uocm9vdCwgbCwgcik7CiAgICAgICAgZm9yIChpbnQgcSA6IGVkW2ldKSB7CiAgICAgICAgICAgIHB1c2hhbGwoaWRbcV0pOwogICAgICAgICAgICBhbnNbcV0gPSBhW2lkW3FdXS52YWw7CiAgICAgICAgfQogICAgfQoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IFE7ICsraSkKICAgICAgICBzdGQ6OmNvdXQgPDwgYW5zW2ldIDw8ICdcbic7CgogICAgcmV0dXJuIDA7Cn0=