#include <cstdio>
#define ls(root) root << 1
#define rs(root) root << 1 | 1
#define max(__a, __b) [&](int _a, int _b) {return _a > _b ? _a : _b;} ((__a), (__b))
const int MAXN = 5e4 + 10;
struct NODE {
int sum;
int maxsub;
int prefix;
int suffix;
} node[MAXN << 2];
int n, m;
int a[MAXN];
void PushUp(int root) {
node[root].sum = node[ls(root)].sum + node[rs(root)].sum;
node[root].prefix = max(node[ls(root)].prefix, node[ls(root)].sum + node[rs(root)].prefix);
node[root].suffix = max(node[rs(root)].suffix, node[rs(root)].sum + node[ls(root)].suffix);
node[root].maxsub = max(max(node[ls(root)].maxsub, node[rs(root)].maxsub), node[ls(root)].suffix + node[rs(root)].prefix);
}
void Build(int root, int lt, int rt) {
if (lt == rt) {
node[root].sum = a[lt];
node[root].maxsub = a[lt];
node[root].prefix = a[lt];
node[root].suffix = a[lt];
return ;
}
int mid = lt + ((rt - lt) >> 1);
Build(ls(root), lt, mid);
Build(rs(root), mid + 1, rt);
PushUp(root);
}
NODE Query(int root, int lt, int rt, int lq, int rq) {
if (lt == lq && rt == rq) {
return node[root];
}
int mid = lt + ((rt - lt) >> 1);
if (rq <= mid) {
return Query(ls(root), lt, mid, lq, rq);
} else if (lq > mid) {
return Query(rs(root), mid + 1, rt, lq, rq);
} else {
NODE ans, ln = Query(ls(root), lt, mid, lq, mid), rn = Query(rs(root), mid + 1, rt, mid + 1, rq);
ans.sum = ln.sum + rn.sum;
ans.prefix = max(ln.prefix, ln.sum + rn.prefix);
ans.suffix = max(rn.suffix, ln.suffix + rn.sum);
ans.maxsub = max(max(ln.maxsub, rn.maxsub), ln.suffix + rn.suffix);
return ans;
}
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
}
Build(1, 1, n);
scanf("%d", &m);
while (m--) {
int l, r;
scanf("%d %d", &l, &r);
printf("%d\n", Query(1, 1, n, l ,r).maxsub);
}
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2RlZmluZSBscyhyb290KSByb290IDw8IDEKI2RlZmluZSBycyhyb290KSByb290IDw8IDEgfCAxCiNkZWZpbmUgbWF4KF9fYSwgX19iKSBbJl0oaW50IF9hLCBpbnQgX2IpIHtyZXR1cm4gX2EgPiBfYiA/IF9hIDogX2I7fSAoKF9fYSksIChfX2IpKQoKY29uc3QgaW50IE1BWE4gPSA1ZTQgKyAxMDsKCnN0cnVjdCBOT0RFIHsKICBpbnQgc3VtOwogIGludCBtYXhzdWI7CiAgaW50IHByZWZpeDsKICBpbnQgc3VmZml4Owp9IG5vZGVbTUFYTiA8PCAyXTsKCmludCBuLCBtOwppbnQgYVtNQVhOXTsKCnZvaWQgUHVzaFVwKGludCByb290KSB7CiAgbm9kZVtyb290XS5zdW0gPSBub2RlW2xzKHJvb3QpXS5zdW0gKyBub2RlW3JzKHJvb3QpXS5zdW07CiAgbm9kZVtyb290XS5wcmVmaXggPSBtYXgobm9kZVtscyhyb290KV0ucHJlZml4LCBub2RlW2xzKHJvb3QpXS5zdW0gKyBub2RlW3JzKHJvb3QpXS5wcmVmaXgpOwogIG5vZGVbcm9vdF0uc3VmZml4ID0gbWF4KG5vZGVbcnMocm9vdCldLnN1ZmZpeCwgbm9kZVtycyhyb290KV0uc3VtICsgbm9kZVtscyhyb290KV0uc3VmZml4KTsKICBub2RlW3Jvb3RdLm1heHN1YiA9IG1heChtYXgobm9kZVtscyhyb290KV0ubWF4c3ViLCBub2RlW3JzKHJvb3QpXS5tYXhzdWIpLCBub2RlW2xzKHJvb3QpXS5zdWZmaXggKyBub2RlW3JzKHJvb3QpXS5wcmVmaXgpOwp9Cgp2b2lkIEJ1aWxkKGludCByb290LCBpbnQgbHQsIGludCBydCkgewogIGlmIChsdCA9PSBydCkgewogICAgbm9kZVtyb290XS5zdW0gPSBhW2x0XTsKICAgIG5vZGVbcm9vdF0ubWF4c3ViID0gYVtsdF07CiAgICBub2RlW3Jvb3RdLnByZWZpeCA9IGFbbHRdOwogICAgbm9kZVtyb290XS5zdWZmaXggPSBhW2x0XTsKICAgIHJldHVybiA7CiAgfQogIGludCBtaWQgPSBsdCArICgocnQgLSBsdCkgPj4gMSk7CiAgQnVpbGQobHMocm9vdCksIGx0LCBtaWQpOwogIEJ1aWxkKHJzKHJvb3QpLCBtaWQgKyAxLCBydCk7CiAgUHVzaFVwKHJvb3QpOwp9CgpOT0RFIFF1ZXJ5KGludCByb290LCBpbnQgbHQsIGludCBydCwgaW50IGxxLCBpbnQgcnEpIHsKICBpZiAobHQgPT0gbHEgJiYgcnQgPT0gcnEpIHsKICAgIHJldHVybiBub2RlW3Jvb3RdOwogIH0KICBpbnQgbWlkID0gbHQgKyAoKHJ0IC0gbHQpID4+IDEpOwogIGlmIChycSA8PSBtaWQpIHsKICAgIHJldHVybiBRdWVyeShscyhyb290KSwgbHQsIG1pZCwgbHEsIHJxKTsKICB9IGVsc2UgaWYgKGxxID4gbWlkKSB7CiAgICByZXR1cm4gUXVlcnkocnMocm9vdCksIG1pZCArIDEsIHJ0LCBscSwgcnEpOwogIH0gZWxzZSB7CiAgICBOT0RFIGFucywgbG4gPSBRdWVyeShscyhyb290KSwgbHQsIG1pZCwgbHEsIG1pZCksIHJuID0gUXVlcnkocnMocm9vdCksIG1pZCArIDEsIHJ0LCBtaWQgKyAxLCBycSk7CiAgICBhbnMuc3VtID0gbG4uc3VtICsgcm4uc3VtOwogICAgYW5zLnByZWZpeCA9IG1heChsbi5wcmVmaXgsIGxuLnN1bSArIHJuLnByZWZpeCk7CiAgICBhbnMuc3VmZml4ID0gbWF4KHJuLnN1ZmZpeCwgbG4uc3VmZml4ICsgcm4uc3VtKTsKICAgIGFucy5tYXhzdWIgPSBtYXgobWF4KGxuLm1heHN1Yiwgcm4ubWF4c3ViKSwgbG4uc3VmZml4ICsgcm4uc3VmZml4KTsKICAgIHJldHVybiBhbnM7CiAgfQp9CgppbnQgbWFpbigpIHsKICBzY2FuZigiJWQiLCAmbik7CiAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICBzY2FuZigiJWQiLCAmYVtpXSk7CiAgfQogIEJ1aWxkKDEsIDEsIG4pOwogIHNjYW5mKCIlZCIsICZtKTsKICB3aGlsZSAobS0tKSB7CiAgICBpbnQgbCwgcjsKICAgIHNjYW5mKCIlZCAlZCIsICZsLCAmcik7CiAgICBwcmludGYoIiVkXG4iLCBRdWVyeSgxLCAxLCBuLCBsICxyKS5tYXhzdWIpOwogIH0KICByZXR1cm4gMDsKfQ==