#include <bits/stdc++.h>
using namespace std;
const int N=50000+5;
int arr[N];
struct Node{
int bls,brs,bs,s;
void merge(Node &A,Node &B){
s = A.s+B.s;
bls = max(A.bls,A.s+B.bls);
brs = max(B.brs,A.brs+B.s);
bs = max(max(A.bs,B.bs),A.brs+B.bls);
}
void create(int val){
s=bs=bls=brs=val;
}
};
Node *st;
void buildTree(int index,int s,int e){
if(s==e){
st[index].create(arr[s]);
return;
}
int mid = (s+e)/2;
buildTree(2*index,s,mid);
buildTree(2*index+1,mid+1,e);
Node left = st[2*index];
Node right = st[2*index+1];
st[index].merge(left,right);
}
Node query(int index,int s,int e,int qs,int qe){
if(qs<=s and qe>=e){
return st[index];
}
if(qs>e or qe<s)
{
Node nil;
nil.create(INT_MIN);
return nil;
}
int mid = (s+e)/2;
Node left = query(2*index,s,mid,qs,qe);
Node right = query(2*index+1,mid+1,e,qs,qe);
Node a;
a.merge(left,right);
return a;
}
int main() {
st = new Node[4*N+5];
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>arr[i];
}
buildTree(1,0,n-1);
int m;
cin>>m;
while(m--){
int x,y;
cin>>x>>y;
Node ans = query(1,0,n-1,x-1,y-1);
cout<<ans.bs<<endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBOPTUwMDAwKzU7CmludCBhcnJbTl07CgpzdHJ1Y3QgTm9kZXsKICBpbnQgYmxzLGJycyxicyxzOwoKICB2b2lkIG1lcmdlKE5vZGUgJkEsTm9kZSAmQil7CiAgICBzID0gQS5zK0IuczsKICAgIGJscyA9IG1heChBLmJscyxBLnMrQi5ibHMpOwogICAgYnJzID0gbWF4KEIuYnJzLEEuYnJzK0Iucyk7CiAgICBicyA9IG1heChtYXgoQS5icyxCLmJzKSxBLmJycytCLmJscyk7CiAgfQoKICB2b2lkIGNyZWF0ZShpbnQgdmFsKXsKICAgIHM9YnM9YmxzPWJycz12YWw7CiAgfQp9OwpOb2RlICpzdDsKCnZvaWQgYnVpbGRUcmVlKGludCBpbmRleCxpbnQgcyxpbnQgZSl7CiAgaWYocz09ZSl7CiAgICBzdFtpbmRleF0uY3JlYXRlKGFycltzXSk7CiAgICByZXR1cm47CiAgfQogIGludCBtaWQgPSAocytlKS8yOwogIGJ1aWxkVHJlZSgyKmluZGV4LHMsbWlkKTsKICBidWlsZFRyZWUoMippbmRleCsxLG1pZCsxLGUpOwogIE5vZGUgbGVmdCA9IHN0WzIqaW5kZXhdOwogIE5vZGUgcmlnaHQgPSBzdFsyKmluZGV4KzFdOwogIHN0W2luZGV4XS5tZXJnZShsZWZ0LHJpZ2h0KTsKfQoKTm9kZSBxdWVyeShpbnQgaW5kZXgsaW50IHMsaW50IGUsaW50IHFzLGludCBxZSl7CiAgaWYocXM8PXMgYW5kIHFlPj1lKXsKICAgIHJldHVybiBzdFtpbmRleF07CiAgfQogIGlmKHFzPmUgb3IgcWU8cykKICB7CiAgICBOb2RlIG5pbDsKICAgIG5pbC5jcmVhdGUoSU5UX01JTik7CiAgICByZXR1cm4gbmlsOwogIH0KICBpbnQgbWlkID0gKHMrZSkvMjsKICBOb2RlIGxlZnQgPSBxdWVyeSgyKmluZGV4LHMsbWlkLHFzLHFlKTsKICBOb2RlIHJpZ2h0ID0gcXVlcnkoMippbmRleCsxLG1pZCsxLGUscXMscWUpOwoKICBOb2RlIGE7CiAgYS5tZXJnZShsZWZ0LHJpZ2h0KTsKICByZXR1cm4gYTsKfQoKaW50IG1haW4oKSB7CglzdCA9IG5ldyBOb2RlWzQqTis1XTsKCiAgaW50IG47CiAgY2luPj5uOwogIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgY2luPj5hcnJbaV07CiAgfQoKICBidWlsZFRyZWUoMSwwLG4tMSk7CgogIGludCBtOwogIGNpbj4+bTsKCiAgd2hpbGUobS0tKXsKICAgIGludCB4LHk7CiAgICBjaW4+Png+Pnk7CgogICAgTm9kZSBhbnMgPSBxdWVyeSgxLDAsbi0xLHgtMSx5LTEpOwogICAgY291dDw8YW5zLmJzPDxlbmRsOwogIH0KfQ==