#include <bits/stdc++.h>
using namespace std;
//typedef long long ll;
struct data{
int sum, pref, suf, ans;
};
data tree[4*50000];
data merge(data l, data r){
data tmp;
tmp.sum = l.sum + r.sum;
tmp.pref = max(l.pref , l.sum + r.pref);
tmp.suf = max(r.suf , l.suf + r.sum);
tmp.ans = max(l.ans, max(r.ans, l.suf+r.pref));
return tmp;
}
void build(int a[],int v, int l, int r){
if(l == r){
tree[v].ans = tree[v].pref = tree[v].suf = tree[v].sum = a[l];
return ;
}
int mid = l + (r-l)/2;
build(a, 2*v, l, mid);
build(a, 2*v+1, mid+1, r);
tree[v] = merge(tree[2*v], tree[2*v+1]);
}
data query(int v,int cl, int cr, int l, int r){
data tmp;
if(r<cl || l>cr){
tmp.sum = 0;
tmp.pref = -999999999;
tmp.suf = -999999999;
tmp.ans = -999999999;
return tmp;
}
if(l<=cl && cr<=r){
return tree[v];
}
int mid = cl + (cr-cl)/2;
if(cl<=l && r<=mid){
return query(2*v, cl, mid, l, r);
}
if(mid+1<=l && r<=cr){
return query(2*v+1, mid+1, cr, l, r);
}
tmp = merge(query(2*v, cl, mid, l, r), query(2*v+1, mid+1, cr, l ,r));
return tmp;
}
int main(void){
int n;
cin>>n;
int a[n];
for(int i=0; i<n; i++){
cin>>a[i];
}
build(a, 1, 0, n-1);
int m;
cin>>m;
while(m--){
int l, r;
cin>>l>>r;
l--;
r--;
data tmp = query(1, 0, n-1, l ,r);
cout<<tmp.ans<<endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vdHlwZWRlZiBsb25nIGxvbmcgbGw7CgpzdHJ1Y3QgZGF0YXsKCWludCBzdW0sIHByZWYsIHN1ZiwgYW5zOwp9OwoKZGF0YSB0cmVlWzQqNTAwMDBdOwoKZGF0YSBtZXJnZShkYXRhIGwsIGRhdGEgcil7CglkYXRhIHRtcDsKCXRtcC5zdW0gPSBsLnN1bSArIHIuc3VtOwoJdG1wLnByZWYgPSBtYXgobC5wcmVmICwgbC5zdW0gKyByLnByZWYpOwoJdG1wLnN1ZiA9IG1heChyLnN1ZiAsIGwuc3VmICsgci5zdW0pOwoJdG1wLmFucyA9IG1heChsLmFucywgbWF4KHIuYW5zLCBsLnN1ZityLnByZWYpKTsKCXJldHVybiB0bXA7Cn0KCnZvaWQgYnVpbGQoaW50IGFbXSxpbnQgdiwgIGludCBsLCBpbnQgcil7CglpZihsID09IHIpewoJCXRyZWVbdl0uYW5zID0gdHJlZVt2XS5wcmVmID0gdHJlZVt2XS5zdWYgPSB0cmVlW3ZdLnN1bSA9IGFbbF07CgkJcmV0dXJuIDsKCX0KCWludCBtaWQgPSBsICsgKHItbCkvMjsKCWJ1aWxkKGEsIDIqdiwgbCwgbWlkKTsKCWJ1aWxkKGEsIDIqdisxLCBtaWQrMSwgcik7Cgl0cmVlW3ZdID0gbWVyZ2UodHJlZVsyKnZdLCB0cmVlWzIqdisxXSk7CgkKfQoKZGF0YSBxdWVyeShpbnQgdixpbnQgY2wsIGludCBjciwgaW50IGwsIGludCByKXsKCWRhdGEgdG1wOwoJaWYocjxjbCB8fCBsPmNyKXsKCQl0bXAuc3VtID0gMDsKCQl0bXAucHJlZiA9IC05OTk5OTk5OTk7CgkJdG1wLnN1ZiA9IC05OTk5OTk5OTk7CgkJdG1wLmFucyA9IC05OTk5OTk5OTk7CgkJcmV0dXJuIHRtcDsKCX0KCWlmKGw8PWNsICYmIGNyPD1yKXsKCQlyZXR1cm4gdHJlZVt2XTsKCX0KCWludCBtaWQgPSBjbCArIChjci1jbCkvMjsKCWlmKGNsPD1sICYmIHI8PW1pZCl7CgkJcmV0dXJuIHF1ZXJ5KDIqdiwgY2wsIG1pZCwgbCwgcik7Cgl9CglpZihtaWQrMTw9bCAmJiByPD1jcil7CgkJcmV0dXJuIHF1ZXJ5KDIqdisxLCBtaWQrMSwgY3IsIGwsIHIpOwoJfQoJdG1wID0gbWVyZ2UocXVlcnkoMip2LCBjbCwgbWlkLCBsLCByKSwgcXVlcnkoMip2KzEsIG1pZCsxLCBjciwgbCAscikpOwoJcmV0dXJuIHRtcDsKCQp9CgppbnQgbWFpbih2b2lkKXsKCWludCBuOwoJY2luPj5uOwoJaW50IGFbbl07Cglmb3IoaW50IGk9MDsgaTxuOyBpKyspewoJCWNpbj4+YVtpXTsKCX0KCWJ1aWxkKGEsIDEsIDAsIG4tMSk7CglpbnQgbTsKCWNpbj4+bTsKCXdoaWxlKG0tLSl7CgkJaW50IGwsIHI7CgkJY2luPj5sPj5yOwoJCWwtLTsKCQlyLS07CgkJZGF0YSB0bXAgPSBxdWVyeSgxLCAwLCBuLTEsIGwgLHIpOwoJCWNvdXQ8PHRtcC5hbnM8PGVuZGw7Cgl9Cn0=