#include<stdio.h>
#include<string.h>
#define INF -99999999;
typedef long long ll;
ll arr[50009];
struct segment
{
ll sum,max;
};
struct segment tree[500009];
ll maximum(ll a,ll b,ll c)
{
ll ans=a;
if(b>ans)
ans=b;
if(c>ans)
ans=c;
return ans;
}
void create(ll node, ll left, ll right)
{
if(left==right)
{
tree[node].sum=tree[node].max=arr[left];
return;
}
ll mid=left+right;
mid/=2;
create(2*node,left,mid);
create(2*node+1,mid+1,right);
tree[node].sum=tree[2*node].sum+tree[2*node+1].sum;
tree[node].max=maximum(tree[node].sum,tree[2*node].max,tree[2*node+1].max);
}
ll query(ll node, ll left, ll right, ll i, ll j)
{
if(i>j || i>right || j<left)
return INF;
if(i==j && i>=left && j<=right) //Inside the interval, single element
return tree[node].max;
ll max;
if(i>=left && j<=right)
max=tree[node].max;
else
max=INF;
ll mid=i+j;
mid/=2;
ll a=query(2*node,left,right,i,mid);
ll b=query(2*node+1,left,right,mid+1,j);
return maximum(max,a,b);
}
int main()
{
//memset(tree,0,sizeof(struct segment)*500009);
ll n,q,a,b;
scanf("%lld",&n);
for(int i=0;i<n;i++)
scanf("%lld",&arr[i]);
create(1,0,n-1);
scanf("%lld",&q);
while(q--)
{
scanf("%lld%lld",&a,&b);
a--;
b--;
printf("%lld\n",query(1,a,b,0,n-1));
}
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nLmg+CiNkZWZpbmUgSU5GIC05OTk5OTk5OTsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CmxsIGFycls1MDAwOV07CnN0cnVjdCBzZWdtZW50CnsKCWxsIHN1bSxtYXg7Cn07CnN0cnVjdCBzZWdtZW50IHRyZWVbNTAwMDA5XTsgIApsbCBtYXhpbXVtKGxsIGEsbGwgYixsbCBjKQp7CglsbCBhbnM9YTsKCWlmKGI+YW5zKQoJCWFucz1iOwoJaWYoYz5hbnMpCgkJYW5zPWM7CglyZXR1cm4gYW5zOwp9CnZvaWQgY3JlYXRlKGxsIG5vZGUsIGxsIGxlZnQsIGxsIHJpZ2h0KQp7CglpZihsZWZ0PT1yaWdodCkKCXsKCQl0cmVlW25vZGVdLnN1bT10cmVlW25vZGVdLm1heD1hcnJbbGVmdF07CgkJcmV0dXJuOwoJfQoJbGwgbWlkPWxlZnQrcmlnaHQ7CgltaWQvPTI7CgljcmVhdGUoMipub2RlLGxlZnQsbWlkKTsKCWNyZWF0ZSgyKm5vZGUrMSxtaWQrMSxyaWdodCk7CgkKCXRyZWVbbm9kZV0uc3VtPXRyZWVbMipub2RlXS5zdW0rdHJlZVsyKm5vZGUrMV0uc3VtOwoJdHJlZVtub2RlXS5tYXg9bWF4aW11bSh0cmVlW25vZGVdLnN1bSx0cmVlWzIqbm9kZV0ubWF4LHRyZWVbMipub2RlKzFdLm1heCk7Cn0KbGwgcXVlcnkobGwgbm9kZSwgbGwgbGVmdCwgbGwgcmlnaHQsIGxsIGksIGxsIGopCnsKCWlmKGk+aiB8fCBpPnJpZ2h0IHx8IGo8bGVmdCkKCQlyZXR1cm4gSU5GOwoJaWYoaT09aiAmJiBpPj1sZWZ0ICYmIGo8PXJpZ2h0KQkvL0luc2lkZSB0aGUgaW50ZXJ2YWwsIHNpbmdsZSBlbGVtZW50CgkJcmV0dXJuIHRyZWVbbm9kZV0ubWF4OwoJbGwgbWF4OwoJaWYoaT49bGVmdCAmJiBqPD1yaWdodCkKCQltYXg9dHJlZVtub2RlXS5tYXg7CgllbHNlCgkJbWF4PUlORjsKCWxsIG1pZD1pK2o7CgltaWQvPTI7CglsbCBhPXF1ZXJ5KDIqbm9kZSxsZWZ0LHJpZ2h0LGksbWlkKTsKCWxsIGI9cXVlcnkoMipub2RlKzEsbGVmdCxyaWdodCxtaWQrMSxqKTsKCQoJcmV0dXJuIG1heGltdW0obWF4LGEsYik7CgkKfQppbnQgbWFpbigpCnsKCS8vbWVtc2V0KHRyZWUsMCxzaXplb2Yoc3RydWN0IHNlZ21lbnQpKjUwMDAwOSk7CglsbCBuLHEsYSxiOwoJc2NhbmYoIiVsbGQiLCZuKTsKCWZvcihpbnQgaT0wO2k8bjtpKyspCgkJc2NhbmYoIiVsbGQiLCZhcnJbaV0pOwoJY3JlYXRlKDEsMCxuLTEpOwoJc2NhbmYoIiVsbGQiLCZxKTsKCXdoaWxlKHEtLSkKCXsKCQlzY2FuZigiJWxsZCVsbGQiLCZhLCZiKTsKCQlhLS07CgkJYi0tOwoJCXByaW50ZigiJWxsZFxuIixxdWVyeSgxLGEsYiwwLG4tMSkpOwoJfQp9