#include <iostream>
#include<cstdio>
using namespace std;
struct node{
long best,sum,lft,ryt;
void init(long a){
best = a;
sum = a;
lft = a;
ryt = a;
}
void merge(node a,node b){
lft = max(a.lft,a.sum+b.lft);
ryt = max(b.ryt,b.sum+a.ryt);
sum = a.sum + b.sum;
best = max( max(a.best,b.best), a.ryt+b.lft);
}
} segtree[200005];
int sn,n,arr[50005];
node query(int t,int i,int j,int ri,int rj){
if(ri==i && rj==j){
return segtree[t];
}
int l = 2*t,mid = (i+j)/2;
if(rj<=mid)
return query(l,i,mid,ri,rj);
if(ri>mid)
return query(l+1,mid+1,j,ri,rj);
node a,b,temp;
a = query(l,i,mid,ri,mid);
b = query(l+1,mid+1,j,mid+1,rj);
temp.merge(a,b);
return temp;
}
node build(int t,int i,int j){
if(i == j){
segtree[t].init(arr[i]);
return segtree[t];
}
node a,b;
int l=2*t,mid = (i+j)/2;
a = build(l,i,mid);
b = build(l+1,mid+1,j);
segtree[t].merge(a,b);
return segtree[t];
}
int main()
{
int q,a,b;
node temp;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&arr[i]);
build(1,1,n);
scanf("%d",&q);
while(q--){
scanf("%d%d",&a,&b);
temp = query(1,1,n,a,b);
printf("%ld\n",temp.best);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxjc3RkaW8+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IG5vZGV7CiAgICBsb25nIGJlc3Qsc3VtLGxmdCxyeXQ7CiAgICB2b2lkIGluaXQobG9uZyBhKXsKICAgICAgICBiZXN0ID0gYTsKICAgICAgICBzdW0gPSBhOwogICAgICAgIGxmdCA9IGE7CiAgICAgICAgcnl0ID0gYTsKICAgIH0KICAgIHZvaWQgbWVyZ2Uobm9kZSBhLG5vZGUgYil7CiAgICAgICAgbGZ0ID0gbWF4KGEubGZ0LGEuc3VtK2IubGZ0KTsKICAgICAgICByeXQgPSBtYXgoYi5yeXQsYi5zdW0rYS5yeXQpOwogICAgICAgIHN1bSA9IGEuc3VtICsgYi5zdW07CiAgICAgICAgYmVzdCA9IG1heCggbWF4KGEuYmVzdCxiLmJlc3QpLCBhLnJ5dCtiLmxmdCk7CiAgICB9Cn0gc2VndHJlZVsyMDAwMDVdOwoKaW50IHNuLG4sYXJyWzUwMDA1XTsKCgpub2RlIHF1ZXJ5KGludCB0LGludCBpLGludCBqLGludCByaSxpbnQgcmopewogICAgaWYocmk9PWkgJiYgcmo9PWopewogICAgICAgIHJldHVybiBzZWd0cmVlW3RdOwogICAgfQogICAgaW50IGwgPSAyKnQsbWlkID0gKGkraikvMjsKICAgIGlmKHJqPD1taWQpCiAgICAgICAgcmV0dXJuIHF1ZXJ5KGwsaSxtaWQscmkscmopOwogICAgaWYocmk+bWlkKQogICAgICAgIHJldHVybiBxdWVyeShsKzEsbWlkKzEsaixyaSxyaik7CiAgICBub2RlIGEsYix0ZW1wOwogICAgYSA9IHF1ZXJ5KGwsaSxtaWQscmksbWlkKTsKICAgIGIgPSBxdWVyeShsKzEsbWlkKzEsaixtaWQrMSxyaik7CiAgICB0ZW1wLm1lcmdlKGEsYik7CiAgICByZXR1cm4gdGVtcDsKfQoKbm9kZSBidWlsZChpbnQgdCxpbnQgaSxpbnQgail7CiAgICBpZihpID09IGopewogICAgICAgIHNlZ3RyZWVbdF0uaW5pdChhcnJbaV0pOwogICAgICAgIHJldHVybiBzZWd0cmVlW3RdOwogICAgfQogICAgbm9kZSBhLGI7CiAgICBpbnQgbD0yKnQsbWlkID0gKGkraikvMjsKICAgIGEgPSBidWlsZChsLGksbWlkKTsKICAgIGIgPSBidWlsZChsKzEsbWlkKzEsaik7CiAgICBzZWd0cmVlW3RdLm1lcmdlKGEsYik7CiAgICByZXR1cm4gc2VndHJlZVt0XTsKfQoKCmludCBtYWluKCkKewogICAgaW50IHEsYSxiOwogICAgbm9kZSB0ZW1wOwogICBzY2FuZigiJWQiLCZuKTsKICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgICAgICAgc2NhbmYoIiVkIiwmYXJyW2ldKTsKICAgYnVpbGQoMSwxLG4pOwogICBzY2FuZigiJWQiLCZxKTsKICAgd2hpbGUocS0tKXsKICAgICAgIHNjYW5mKCIlZCVkIiwmYSwmYik7CiAgICAgICB0ZW1wID0gcXVlcnkoMSwxLG4sYSxiKTsKICAgICAgIHByaW50ZigiJWxkXG4iLHRlbXAuYmVzdCk7CiAgIH0KICAgcmV0dXJuIDA7Cn0K