#include <bits/stdc++.h>
#define ll long long int
#define ld long double
#define nl "\n"
#define ull unsigned long long
#define rv return void
#define str string
#define all(x) x.begin(), x.end()
#define allr(x) x.rbegin(), x.rend()
#define vec vector
#define fixed(n) fixed << setprecision(n)
#define Moageza ios::sync_with_stdio(false);cout.tie(NULL);cin.tie(NULL);
using namespace std;
const ll mod = 1e9+7;
//////////////////////////////////////////////////////
struct SegmentTree{
private:
#define L 2*node+1
#define R 2*node+2
#define mid (l+r>>1)
struct Node{
ll sum{}, ans{}, mx_pref{}, mx_suff{};
Node() {}
Node(ll val) {
sum = val;
ans = mx_pref = mx_suff = val;
};
};
Node merge(Node x, Node y){
Node res;
res.sum = x.sum + y.sum;
res.ans = max({x.ans, y.ans, x.mx_suff + y.mx_pref});
res.mx_pref = max(x.mx_pref, x.sum + y.mx_pref);
res.mx_suff = max(y.mx_suff, y.sum + x.mx_suff);
return res;
}
int sz;vector<Node>seg;
void update(int l,int r,int node,int idx,ll val)
{
if(l==r)
{
seg[node]=Node(val);
return;
}
if(idx<=mid)
{
update(l,mid,L,idx,val);
}
else
{
update(mid+1,r,R,idx,val);
}
seg[node]=merge(seg[L],seg[R]);
}
Node query(int l,int r,int node,int lq,int rq)
{
if(r<lq||l>rq)
{
return Node(-1e12);
}
if(l>=lq&&r<=rq)
{
return seg[node];
}
Node lft=query(l,mid,L,lq,rq);
Node rgt=query(mid+1,r,R,lq,rq);
return merge(lft,rgt);
}
public:
SegmentTree(int n)
{
sz=1;
while(sz<n) sz*=2;
seg=vector<Node>(sz*2);
}
void update(int idx,ll val)
{
update(0,sz-1,0,idx,val);
}
ll query(int l,int r)
{
return query(0,sz-1,0,l,r).ans;
}
};
void solve(){
int a,b;cin >> a;
SegmentTree st(a);
for(int i=0;i<a;i++){
int x;cin >> x;
st.update(i,x);
}
cin>> b;
for(int i=0;i<b;i++){
int x,y;cin >>x>>y;
cout <<st.query(x-1,y-1)<<nl;
}
}
int main()
{
Moageza
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);
#endif
int t = 1;
// cin >> t;
while (t--) {
solve();
cout << nl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nIGludAojZGVmaW5lIGxkIGxvbmcgZG91YmxlCiNkZWZpbmUgbmwgIlxuIgojZGVmaW5lIHVsbCB1bnNpZ25lZCBsb25nIGxvbmcKI2RlZmluZSBydiByZXR1cm4gdm9pZAojZGVmaW5lIHN0ciBzdHJpbmcKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLCB4LmVuZCgpCiNkZWZpbmUgYWxscih4KSB4LnJiZWdpbigpLCB4LnJlbmQoKQojZGVmaW5lIHZlYyB2ZWN0b3IKI2RlZmluZSBmaXhlZChuKSBmaXhlZCA8PCBzZXRwcmVjaXNpb24obikKI2RlZmluZSBNb2FnZXphIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjb3V0LnRpZShOVUxMKTtjaW4udGllKE5VTEwpOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBsbCBtb2QgPSAxZTkrNzsKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCnN0cnVjdCBTZWdtZW50VHJlZXsKcHJpdmF0ZToKI2RlZmluZSBMIDIqbm9kZSsxCiNkZWZpbmUgUiAyKm5vZGUrMgojZGVmaW5lIG1pZCAobCtyPj4xKQpzdHJ1Y3QgTm9kZXsKICAgIGxsIHN1bXt9LCBhbnN7fSwgbXhfcHJlZnt9LCBteF9zdWZme307CiAgICBOb2RlKCkge30KICAgIE5vZGUobGwgdmFsKSB7CiAgICAgICAgc3VtID0gdmFsOwogICAgICAgIGFucyA9IG14X3ByZWYgPSBteF9zdWZmID0gdmFsOwp9Owp9OwpOb2RlIG1lcmdlKE5vZGUgeCwgTm9kZSB5KXsKICAgIE5vZGUgcmVzOwogICAgICByZXMuc3VtID0geC5zdW0gKyB5LnN1bTsKICAgICAgcmVzLmFucyA9IG1heCh7eC5hbnMsIHkuYW5zLCB4Lm14X3N1ZmYgKyB5Lm14X3ByZWZ9KTsKICAgICAgcmVzLm14X3ByZWYgPSBtYXgoeC5teF9wcmVmLCB4LnN1bSArIHkubXhfcHJlZik7CiAgICAgIHJlcy5teF9zdWZmID0gbWF4KHkubXhfc3VmZiwgeS5zdW0gKyB4Lm14X3N1ZmYpOwogICAgICByZXR1cm4gcmVzOwogIH0KICAgIGludCBzejt2ZWN0b3I8Tm9kZT5zZWc7CiAgICB2b2lkIHVwZGF0ZShpbnQgbCxpbnQgcixpbnQgbm9kZSxpbnQgaWR4LGxsIHZhbCkKICAgIHsKICAgICAgICBpZihsPT1yKQogICAgICAgIHsKICAgICAgICAgICAgc2VnW25vZGVdPU5vZGUodmFsKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZihpZHg8PW1pZCkKICAgICAgICB7CiAgICAgICAgICAgIHVwZGF0ZShsLG1pZCxMLGlkeCx2YWwpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICB1cGRhdGUobWlkKzEscixSLGlkeCx2YWwpOwogICAgICAgIH0KICAgICAgICBzZWdbbm9kZV09bWVyZ2Uoc2VnW0xdLHNlZ1tSXSk7CiAgICB9CiAgICBOb2RlIHF1ZXJ5KGludCBsLGludCByLGludCBub2RlLGludCBscSxpbnQgcnEpCiAgICB7CiAgICAgICAgaWYocjxscXx8bD5ycSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBOb2RlKC0xZTEyKTsKICAgICAgICB9CiAgICAgICAgaWYobD49bHEmJnI8PXJxKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHNlZ1tub2RlXTsKICAgICAgICB9CiAgICAgICAgTm9kZSBsZnQ9cXVlcnkobCxtaWQsTCxscSxycSk7CiAgICAgICAgTm9kZSByZ3Q9cXVlcnkobWlkKzEscixSLGxxLHJxKTsKICAgICAgICByZXR1cm4gbWVyZ2UobGZ0LHJndCk7CiAgICB9CnB1YmxpYzoKICAgIFNlZ21lbnRUcmVlKGludCBuKQogICAgewogICAgICAgIHN6PTE7CiAgICAgICAgd2hpbGUoc3o8bikgc3oqPTI7CiAgICAgICAgc2VnPXZlY3RvcjxOb2RlPihzeioyKTsKICAgIH0KICAgIHZvaWQgdXBkYXRlKGludCBpZHgsbGwgdmFsKQogICAgewogICAgICAgIHVwZGF0ZSgwLHN6LTEsMCxpZHgsdmFsKTsKICAgIH0KICAgIGxsIHF1ZXJ5KGludCBsLGludCByKQogICAgewogICAgICAgIHJldHVybiBxdWVyeSgwLHN6LTEsMCxsLHIpLmFuczsKICAgIH0KfTsKdm9pZCBzb2x2ZSgpewogICAgIGludCBhLGI7Y2luID4+IGE7CiAgIFNlZ21lbnRUcmVlIHN0KGEpOwogICBmb3IoaW50IGk9MDtpPGE7aSsrKXsKICAgIGludCB4O2NpbiA+PiB4OwogICAgc3QudXBkYXRlKGkseCk7CiAgIH0KICAgY2luPj4gYjsKICAgZm9yKGludCBpPTA7aTxiO2krKyl7CiAgICBpbnQgeCx5O2NpbiA+Png+Pnk7CiAgICBjb3V0IDw8c3QucXVlcnkoeC0xLHktMSk8PG5sOwogICB9Cn0KaW50IG1haW4oKQp7CiAgIE1vYWdlemEKICAgICNpZm5kZWYgT05MSU5FX0pVREdFCiAgICAgICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7ZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKICAgICNlbmRpZgogICAgaW50IHQgPSAxOwogICAgLy8gIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkgewogICAgICAgIHNvbHZlKCk7CiAgICAgICAgY291dCA8PCBubDsKICAgIH0KICAgIHJldHVybiAwOwp9