#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
typedef int ull;
#define M 100000
ull maxans;
ull arr[M];
ull constructF(ull ss,ull se,ull *st,ull si)
{
if(ss==se)
{
st[si]=arr[ss];
return st[si];
}
ull mid=(se+ss)/2;
st[si]=constructF(ss,mid,st,2*si+1)+constructF(mid+1,se,st,2*si+2);
return st[si];
}
ull *construct(ull n)
{
ull x=(ceil(log2(n)));
ull max_size=2*pow(2,x)-1;
ull *st=new ull[max_size];
constructF(0,n-1,st,0);
for(int i=0; i<max_size;i++)
{
cout<<*(st+i)<<" ";
}
return st;
}
ull getSumF(ull *st,ull ss,ull se,ull qs,ull qe,ull index)
{
if(ss>=qs&&se<=qe)
{
if(maxans<st[index])
maxans=st[index];
if(ss!=se)
{
ull mid=(ss+se)/2;
getSumF(st,ss,mid,qs,qe,2*index+1);
getSumF(st,mid+1,se,qs,qe,2*index+2);
}
return st[index];
}
if(se<qs||ss>qe)
{
return 0;
}
ull mid = (se+ss)/2;
ull val=getSumF(st,ss,mid,qs,qe,2*index+1)+getSumF(st,mid+1,se,qs,qe,2*mid+2);
if(maxans<val)
maxans=val;
return val;
}
/*ull getSum(ull arr[],ull *st,ull n,ull qs,ull qe)
{
if(qs<0||qe>n-1||qs>qe)
return 0;
}*/
int main()
{
ull n;
scanf("%d",&n);
for(ull i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
ull m;
scanf("%d",&m);
ull *st=construct(n);
while(m--)
{
ull x,y;
maxans=-10000;
scanf("%d%d",&x,&y);
//getSum(arr,st,n,x-1,y-1);
//getSumF(st,0,n-1,x-1,y-1,0);
printf("%d\n",maxans);
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlPG1hdGguaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAp0eXBlZGVmIGludCB1bGw7CiAKI2RlZmluZSBNIDEwMDAwMAp1bGwgbWF4YW5zOwp1bGwgYXJyW01dOwp1bGwgY29uc3RydWN0Rih1bGwgc3MsdWxsIHNlLHVsbCAqc3QsdWxsIHNpKQp7CmlmKHNzPT1zZSkKewpzdFtzaV09YXJyW3NzXTsKcmV0dXJuIHN0W3NpXTsKfQogCnVsbCBtaWQ9KHNlK3NzKS8yOwogCnN0W3NpXT1jb25zdHJ1Y3RGKHNzLG1pZCxzdCwyKnNpKzEpK2NvbnN0cnVjdEYobWlkKzEsc2Usc3QsMipzaSsyKTsKIApyZXR1cm4gc3Rbc2ldOwp9CiAKdWxsICpjb25zdHJ1Y3QodWxsIG4pCnsKdWxsIHg9KGNlaWwobG9nMihuKSkpOwp1bGwgbWF4X3NpemU9Mipwb3coMix4KS0xOwp1bGwgKnN0PW5ldyB1bGxbbWF4X3NpemVdOwogCmNvbnN0cnVjdEYoMCxuLTEsc3QsMCk7CiBmb3IoaW50IGk9MDsgaTxtYXhfc2l6ZTtpKyspCiB7CiAJY291dDw8KihzdCtpKTw8IiAiOwogfQpyZXR1cm4gc3Q7Cn0KIAp1bGwgZ2V0U3VtRih1bGwgKnN0LHVsbCBzcyx1bGwgc2UsdWxsIHFzLHVsbCBxZSx1bGwgaW5kZXgpCnsKaWYoc3M+PXFzJiZzZTw9cWUpCnsKaWYobWF4YW5zPHN0W2luZGV4XSkKbWF4YW5zPXN0W2luZGV4XTsKaWYoc3MhPXNlKQp7CnVsbCBtaWQ9KHNzK3NlKS8yOwpnZXRTdW1GKHN0LHNzLG1pZCxxcyxxZSwyKmluZGV4KzEpOwpnZXRTdW1GKHN0LG1pZCsxLHNlLHFzLHFlLDIqaW5kZXgrMik7Cn0KcmV0dXJuIHN0W2luZGV4XTsKfQogCmlmKHNlPHFzfHxzcz5xZSkKewpyZXR1cm4gMDsKfQp1bGwgbWlkID0gKHNlK3NzKS8yOwp1bGwgdmFsPWdldFN1bUYoc3Qsc3MsbWlkLHFzLHFlLDIqaW5kZXgrMSkrZ2V0U3VtRihzdCxtaWQrMSxzZSxxcyxxZSwyKm1pZCsyKTsKaWYobWF4YW5zPHZhbCkKbWF4YW5zPXZhbDsKIApyZXR1cm4gdmFsOwp9Ci8qdWxsIGdldFN1bSh1bGwgYXJyW10sdWxsICpzdCx1bGwgbix1bGwgcXMsdWxsIHFlKQp7CiAgaWYocXM8MHx8cWU+bi0xfHxxcz5xZSkKICByZXR1cm4gMDsKIAogCn0qLwppbnQgbWFpbigpCnsKdWxsIG47CnNjYW5mKCIlZCIsJm4pOwogCmZvcih1bGwgaT0wO2k8bjtpKyspCnsKc2NhbmYoIiVkIiwmYXJyW2ldKTsKfQp1bGwgbTsKc2NhbmYoIiVkIiwmbSk7CnVsbCAqc3Q9Y29uc3RydWN0KG4pOwoKd2hpbGUobS0tKQp7CnVsbCB4LHk7Cm1heGFucz0tMTAwMDA7CnNjYW5mKCIlZCVkIiwmeCwmeSk7Ci8vZ2V0U3VtKGFycixzdCxuLHgtMSx5LTEpOwovL2dldFN1bUYoc3QsMCxuLTEseC0xLHktMSwwKTsKcHJpbnRmKCIlZFxuIixtYXhhbnMpOwp9CnJldHVybiAwOwp9