import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class FastReader {
public FastReader() {
}
while (st == null || !st.hasMoreElements()) {
}
return st.nextToken();
}
}
return Long.
parseLong(next
()); }
return Double.
parseDouble(next
()); }
return br.readLine();
}
}
class Main{
static class Node{
long prefix, suffix;
long max;
long sum;
Node(int s){
prefix = suffix = max = sum = s;
}
}
public static void build(int ind, int l, int r){
if( l==r){
segment[ind] = new Node(ar[l]);
return;
}
int mid = l+ (r-l)/2;
build(2*ind+1, l, mid);
build(2*ind+2, mid+1, r);
segment[ind] = new Node(0);
calulate(segment[ind], segment[2*ind+1], segment[2*ind+2]);
}
public static void calulate(Node res, Node left, Node right){
res.
prefix = Math.
max(left.
prefix, left.
sum+ right.
prefix); res.
suffix = Math.
max(right.
suffix, right.
sum+ left.
suffix); res.
max = Math.
max(Math.
max(left.
max, right.
max), left.
suffix+right.
prefix); res.sum = left.sum + right.sum;
res.
max = Math.
max(res.
max, res.
prefix); res.
max = Math.
max(res.
max, res.
suffix); res.
max = Math.
max(res.
max, res.
sum); }
public static Node query(int ind, int l, int r, int ql, int qr){
Node res = new Node(0);
if( r < ql || qr < l){
return res;
}
if( ql <= l && qr >= r){
return segment[ind];
}
int mid = l+ (r-l)/2;
Node left = query(2*ind+1, l, mid, ql ,qr);
Node right = query(2*ind+2, mid+1, r, ql ,qr);
calulate(res, left, right);
return res;
}
static int[] ar;
static Node[] segment;
FastReader ff = new FastReader();
int n = ff.nextInt();
ar = new int[n];
segment = new Node[(4*n)+5];
for(int i = 0; i < n; i++){
ar[i] = ff.nextInt();
}
build(0, 0, n-1);
int q = ff.nextInt();
while(q-- > 0){
int l = ff.nextInt()-1;
int r = ff.nextInt()-1;
System.
out.
println(query
(0,
0, n
- 1, l, r
).
max); }
}
}
aW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwppbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKaW1wb3J0IGphdmEudXRpbC5TdHJpbmdUb2tlbml6ZXI7CgpjbGFzcyBGYXN0UmVhZGVyIHsKICAgIEJ1ZmZlcmVkUmVhZGVyIGJyOwogICAgU3RyaW5nVG9rZW5pemVyIHN0OwoKICAgIHB1YmxpYyBGYXN0UmVhZGVyKCkgewogICAgICAgIGJyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihTeXN0ZW0uaW4pKTsKICAgIH0KCiAgICBTdHJpbmcgbmV4dCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgd2hpbGUgKHN0ID09IG51bGwgfHwgIXN0Lmhhc01vcmVFbGVtZW50cygpKSB7CiAgICAgICAgICAgIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihici5yZWFkTGluZSgpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHN0Lm5leHRUb2tlbigpOwogICAgfQoKICAgIGludCBuZXh0SW50KCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICByZXR1cm4gSW50ZWdlci5wYXJzZUludChuZXh0KCkpOwogICAgfQoKICAgIGxvbmcgbmV4dExvbmcoKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgIHJldHVybiBMb25nLnBhcnNlTG9uZyhuZXh0KCkpOwogICAgfQoKICAgIGRvdWJsZSBuZXh0RG91YmxlKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICByZXR1cm4gRG91YmxlLnBhcnNlRG91YmxlKG5leHQoKSk7CiAgICB9CgogICAgU3RyaW5nIG5leHRMaW5lKCkgdGhyb3dzIElPRXhjZXB0aW9uewogICAgICAgIHJldHVybiBici5yZWFkTGluZSgpOwogICAgfQp9CgpjbGFzcyBNYWluewogICAgc3RhdGljIGNsYXNzIE5vZGV7CiAgICAgICAgbG9uZyBwcmVmaXgsIHN1ZmZpeDsKICAgICAgICBsb25nIG1heDsKICAgICAgICBsb25nIHN1bTsKICAgICAgICBOb2RlKGludCBzKXsKICAgICAgICAgICAgcHJlZml4ID0gc3VmZml4ID0gbWF4ID0gc3VtID0gczsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIGJ1aWxkKGludCBpbmQsIGludCBsLCBpbnQgcil7CiAgICAgICAgaWYoIGw9PXIpewogICAgICAgICAgICBzZWdtZW50W2luZF0gPSBuZXcgTm9kZShhcltsXSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaW50IG1pZCA9IGwrIChyLWwpLzI7CiAgICAgICAgYnVpbGQoMippbmQrMSwgbCwgbWlkKTsKICAgICAgICBidWlsZCgyKmluZCsyLCBtaWQrMSwgcik7CgogICAgICAgIHNlZ21lbnRbaW5kXSA9IG5ldyBOb2RlKDApOwogICAgICAgIGNhbHVsYXRlKHNlZ21lbnRbaW5kXSwgc2VnbWVudFsyKmluZCsxXSwgc2VnbWVudFsyKmluZCsyXSk7CiAgICB9CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgY2FsdWxhdGUoTm9kZSByZXMsIE5vZGUgbGVmdCwgTm9kZSByaWdodCl7CiAgICAgICAgcmVzLnByZWZpeCA9IE1hdGgubWF4KGxlZnQucHJlZml4LCBsZWZ0LnN1bSsgcmlnaHQucHJlZml4KTsKICAgICAgICByZXMuc3VmZml4ID0gTWF0aC5tYXgocmlnaHQuc3VmZml4LCByaWdodC5zdW0rIGxlZnQuc3VmZml4KTsKICAgICAgICByZXMubWF4ID0gTWF0aC5tYXgoTWF0aC5tYXgobGVmdC5tYXgsIHJpZ2h0Lm1heCksIGxlZnQuc3VmZml4K3JpZ2h0LnByZWZpeCk7CiAgICAgICAgcmVzLnN1bSA9IGxlZnQuc3VtICsgcmlnaHQuc3VtOwogICAgICAgIHJlcy5tYXggPSBNYXRoLm1heChyZXMubWF4LCByZXMucHJlZml4KTsKICAgICAgICByZXMubWF4ID0gTWF0aC5tYXgocmVzLm1heCwgcmVzLnN1ZmZpeCk7CiAgICAgICAgcmVzLm1heCA9IE1hdGgubWF4KHJlcy5tYXgsIHJlcy5zdW0pOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgTm9kZSBxdWVyeShpbnQgaW5kLCBpbnQgbCwgaW50IHIsIGludCBxbCwgaW50IHFyKXsKICAgICAgICBOb2RlIHJlcyA9IG5ldyBOb2RlKDApOwogICAgICAgIGlmKCByIDwgcWwgfHwgcXIgPCBsKXsKICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICB9CiAgICAgICAgaWYoIHFsIDw9IGwgJiYgcXIgPj0gcil7CiAgICAgICAgICAgIHJldHVybiBzZWdtZW50W2luZF07CiAgICAgICAgfQogICAgICAgIGludCBtaWQgPSBsKyAoci1sKS8yOwogICAgICAgIE5vZGUgbGVmdCA9IHF1ZXJ5KDIqaW5kKzEsIGwsIG1pZCwgcWwgLHFyKTsKICAgICAgICBOb2RlIHJpZ2h0ID0gcXVlcnkoMippbmQrMiwgbWlkKzEsIHIsIHFsICxxcik7CiAgICAgICAgY2FsdWxhdGUocmVzLCBsZWZ0LCByaWdodCk7CiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KICAgIHN0YXRpYyBpbnRbXSBhcjsKICAgIHN0YXRpYyBOb2RlW10gc2VnbWVudDsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgRmFzdFJlYWRlciBmZiA9IG5ldyBGYXN0UmVhZGVyKCk7CiAgICAgICAgaW50IG4gPSBmZi5uZXh0SW50KCk7CiAgICAgICAgYXIgPSBuZXcgaW50W25dOwogICAgICAgIHNlZ21lbnQgPSBuZXcgTm9kZVsoNCpuKSs1XTsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKICAgICAgICAgICAgYXJbaV0gPSBmZi5uZXh0SW50KCk7CiAgICAgICAgfQogICAgICAgIGJ1aWxkKDAsIDAsIG4tMSk7CiAgICAgICAgaW50IHEgPSBmZi5uZXh0SW50KCk7CgogICAgICAgIHdoaWxlKHEtLSA+IDApewogICAgICAgICAgICBpbnQgbCA9IGZmLm5leHRJbnQoKS0xOwogICAgICAgICAgICBpbnQgciA9IGZmLm5leHRJbnQoKS0xOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocXVlcnkoMCwgMCwgbiAtIDEsIGwsIHIpLm1heCk7CiAgICAgICAgfQogICAgfQp9