#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007ll
struct node
{
ll mx;
ll tsum;
ll psum;
ll ssum;
};
void build(node tree[],ll arr[],ll ss,ll se,ll idx)
{
if(ss==se)
{
tree[idx].mx = arr[ss];
tree[idx].tsum = arr[ss];
tree[idx].psum = arr[ss];
tree[idx].ssum = arr[ss];
return;
}
ll m = (ss+se)/2;
build(tree,arr,ss,m,2*idx+1);
build(tree,arr,m+1,se,2*idx+2);
struct node left = tree[2*idx+1];
struct node right = tree[2*idx+2];
tree[idx].psum = max(left.psum,right.psum+left.tsum);
tree[idx].ssum = max(right.ssum,left.ssum+right.tsum);
tree[idx].tsum = left.tsum+right.tsum;
tree[idx].mx = max((left.ssum+right.psum),max(left.mx,right.mx));
}
node query(node tree[],ll ss,ll se,ll qs,ll qe,ll idx)
{
// cout<<ss<<" "<<se;
if(qs<=ss && qe>=se)
{
return tree[idx];
}
else if(qs>se || qe<ss)
{
struct node waste;
waste.mx = waste.tsum = waste.psum = waste.ssum = -5000000ll;
return waste;
}
ll m = (ss+se)/2;
struct node left = query(tree,ss,m,qs,qe,2*idx+1);
struct node right = query(tree,m+1,se,qs,qe,2*idx+2);
struct node retval;
retval.psum = max(left.psum,right.psum+left.tsum);
retval.ssum = max(right.ssum,left.ssum+right.tsum);
retval.tsum = left.tsum+right.tsum;
retval.mx = max((left.ssum+right.psum),max(left.mx,right.mx));
return retval;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(NULL); cout.tie(NULL);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
ll n;
cin>>n;
ll arr[n];
for(int i=0; i<n; i++)
cin>>arr[i];
struct node tree[4*n+1];
for(ll i=0; i<4*n+1; i++)
{
tree[i].mx = -5000000ll;
tree[i].tsum = -5000000ll;
tree[i].psum = -5000000ll;
tree[i].ssum = -5000000ll;
}
build(tree,arr,0,n-1,1);
// for(ll i=1; i<4*n+1; i++)
// {
// cout<<tree[i].mx<<" "<<tree[i].tsum<<" "<<tree[i].psum<<" "<<tree[i].ssum<<endl;
// }
ll q, l, r;
cin>>q;
while(q--)
{
cin>>l;
cin>>r;
l--;
r--;
struct node ans = query(tree,0,n-1,l,r,1);
cout<<ans.mx<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBtb2QgMTAwMDAwMDAwN2xsCgpzdHJ1Y3Qgbm9kZQp7CiAgICBsbCBteDsKICAgIGxsIHRzdW07CiAgICBsbCBwc3VtOwogICAgbGwgc3N1bTsKfTsKCnZvaWQgYnVpbGQobm9kZSB0cmVlW10sbGwgYXJyW10sbGwgc3MsbGwgc2UsbGwgaWR4KQp7CiAgICBpZihzcz09c2UpCiAgICB7CiAgICAgICAgdHJlZVtpZHhdLm14ID0gYXJyW3NzXTsKICAgICAgICB0cmVlW2lkeF0udHN1bSA9IGFycltzc107CiAgICAgICAgdHJlZVtpZHhdLnBzdW0gPSBhcnJbc3NdOwogICAgICAgIHRyZWVbaWR4XS5zc3VtID0gYXJyW3NzXTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBsbCBtID0gKHNzK3NlKS8yOwogICAgYnVpbGQodHJlZSxhcnIsc3MsbSwyKmlkeCsxKTsKICAgIGJ1aWxkKHRyZWUsYXJyLG0rMSxzZSwyKmlkeCsyKTsKCiAgICBzdHJ1Y3Qgbm9kZSBsZWZ0ID0gdHJlZVsyKmlkeCsxXTsKICAgIHN0cnVjdCBub2RlIHJpZ2h0ID0gdHJlZVsyKmlkeCsyXTsKICAgIHRyZWVbaWR4XS5wc3VtID0gbWF4KGxlZnQucHN1bSxyaWdodC5wc3VtK2xlZnQudHN1bSk7CiAgICB0cmVlW2lkeF0uc3N1bSA9IG1heChyaWdodC5zc3VtLGxlZnQuc3N1bStyaWdodC50c3VtKTsKICAgIHRyZWVbaWR4XS50c3VtID0gbGVmdC50c3VtK3JpZ2h0LnRzdW07CiAgICB0cmVlW2lkeF0ubXggPSBtYXgoKGxlZnQuc3N1bStyaWdodC5wc3VtKSxtYXgobGVmdC5teCxyaWdodC5teCkpOwoKfQoKbm9kZSBxdWVyeShub2RlIHRyZWVbXSxsbCBzcyxsbCBzZSxsbCBxcyxsbCBxZSxsbCBpZHgpCnsKICAgIC8vIGNvdXQ8PHNzPDwiICI8PHNlOwogICAgaWYocXM8PXNzICYmIHFlPj1zZSkKICAgIHsKICAgICAgICByZXR1cm4gdHJlZVtpZHhdOwogICAgfQogICAgZWxzZSBpZihxcz5zZSB8fCBxZTxzcykKICAgIHsKICAgICAgICBzdHJ1Y3Qgbm9kZSB3YXN0ZTsKICAgICAgICB3YXN0ZS5teCA9IHdhc3RlLnRzdW0gPSB3YXN0ZS5wc3VtID0gd2FzdGUuc3N1bSA9IC01MDAwMDAwbGw7CiAgICAgICAgcmV0dXJuIHdhc3RlOwogICAgfQoKICAgIGxsIG0gPSAoc3Mrc2UpLzI7CiAgICBzdHJ1Y3Qgbm9kZSBsZWZ0ID0gcXVlcnkodHJlZSxzcyxtLHFzLHFlLDIqaWR4KzEpOwogICAgc3RydWN0IG5vZGUgcmlnaHQgPSBxdWVyeSh0cmVlLG0rMSxzZSxxcyxxZSwyKmlkeCsyKTsKICAgIHN0cnVjdCBub2RlIHJldHZhbDsKICAgIHJldHZhbC5wc3VtID0gbWF4KGxlZnQucHN1bSxyaWdodC5wc3VtK2xlZnQudHN1bSk7CiAgICByZXR2YWwuc3N1bSA9IG1heChyaWdodC5zc3VtLGxlZnQuc3N1bStyaWdodC50c3VtKTsKICAgIHJldHZhbC50c3VtID0gbGVmdC50c3VtK3JpZ2h0LnRzdW07CiAgICByZXR2YWwubXggPSBtYXgoKGxlZnQuc3N1bStyaWdodC5wc3VtKSxtYXgobGVmdC5teCxyaWdodC5teCkpOwogICAgcmV0dXJuIHJldHZhbDsKfQoKaW50IG1haW4oKQp7CgogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKE5VTEwpOyBjb3V0LnRpZShOVUxMKTsKICAgICNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiAgICAjZW5kaWYKCiAgICBsbCBuOwogICAgY2luPj5uOwogICAgbGwgYXJyW25dOwogICAgCiAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspCiAgICAgICAgY2luPj5hcnJbaV07CiAgICAKICAgIHN0cnVjdCBub2RlIHRyZWVbNCpuKzFdOwoKICAgIGZvcihsbCBpPTA7IGk8NCpuKzE7IGkrKykKICAgIHsKICAgICAgICB0cmVlW2ldLm14ID0gLTUwMDAwMDBsbDsKICAgICAgICB0cmVlW2ldLnRzdW0gPSAtNTAwMDAwMGxsOwogICAgICAgIHRyZWVbaV0ucHN1bSA9IC01MDAwMDAwbGw7CiAgICAgICAgdHJlZVtpXS5zc3VtID0gLTUwMDAwMDBsbDsgICAgICAgIAogICAgfQogICAgYnVpbGQodHJlZSxhcnIsMCxuLTEsMSk7CiAgICAvLyBmb3IobGwgaT0xOyBpPDQqbisxOyBpKyspCiAgICAvLyB7CiAgICAvLyAgICAgY291dDw8dHJlZVtpXS5teDw8IiAiPDx0cmVlW2ldLnRzdW08PCIgIjw8dHJlZVtpXS5wc3VtPDwiICI8PHRyZWVbaV0uc3N1bTw8ZW5kbDsKICAgIC8vIH0KCiAgICBsbCBxLCBsLCByOwogICAgY2luPj5xOwogICAgd2hpbGUocS0tKQogICAgewogICAgICAgIGNpbj4+bDsKICAgICAgICBjaW4+PnI7CiAgICAgICAgbC0tOwogICAgICAgIHItLTsKICAgICAgICBzdHJ1Y3Qgbm9kZSBhbnMgPSBxdWVyeSh0cmVlLDAsbi0xLGwsciwxKTsKICAgICAgICBjb3V0PDxhbnMubXg8PGVuZGw7CiAgICB9CgogICAgCgogICAgcmV0dXJuIDA7Cn0=