#include <iostream>
#include <vector>
using namespace std;
vector <long long> tree;
long long merge (long long a , long long b){
return a+b;
}
void build (int a[], int v, int l, int r){
if(r-l==1){
tree[v]=a[l];
return;
}
int m=(l+r)/2;
build (a,2*v+1, l , m);
build (a,2*v+2, m , r);
tree[v]=merge (tree[2*v+1],tree[2*v+2]);
}
long long get(int v, int l, int r, int ql,int qr){
int E=0;
if(ql<=l and qr>=r){
return tree[v];
}
if (r<=ql or ql<=l){
return E;
}
int m=(l+r)/2;
return merge ( get(2*v+1, l , m , ql, qr),
get(2*v+2, m , r, ql, qr));
}
int main() {
int n;
cin>>n;
int a[n];
for(int i=0; i<n; i++){
cin>>a[i];
}
tree.resize(4*n);
build(a,0,0,n);
int k;
cin>>k;
while(k--){
int l,r;
cin>>l>>r;
cout<<get(0,0,n,l-1,r)<<'\n';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2ZWN0b3IgPGxvbmcgbG9uZz4gdHJlZTsKbG9uZyBsb25nIG1lcmdlIChsb25nIGxvbmcgIGEgLCBsb25nIGxvbmcgYil7CglyZXR1cm4gYStiOwp9CnZvaWQgYnVpbGQgKGludCBhW10sIGludCB2LCBpbnQgbCwgaW50IHIpewoJaWYoci1sPT0xKXsKCQl0cmVlW3ZdPWFbbF07CgkJcmV0dXJuOwoJfQoJaW50IG09KGwrcikvMjsKCWJ1aWxkIChhLDIqdisxLCBsICwgbSk7CglidWlsZCAoYSwyKnYrMiwgbSAsIHIpOwoJdHJlZVt2XT1tZXJnZSAodHJlZVsyKnYrMV0sdHJlZVsyKnYrMl0pOwp9CmxvbmcgbG9uZyBnZXQoaW50IHYsICBpbnQgbCwgaW50IHIsIGludCBxbCxpbnQgcXIpewoJaW50IEU9MDsKCWlmKHFsPD1sIGFuZCBxcj49cil7CgkJcmV0dXJuIHRyZWVbdl07Cgl9CglpZiAocjw9cWwgb3IgcWw8PWwpewoJCXJldHVybiBFOwoJfQoJaW50IG09KGwrcikvMjsKCXJldHVybiAgbWVyZ2UgKCBnZXQoMip2KzEsIGwgLCBtICwgcWwsIHFyKSwKCQkJCQlnZXQoMip2KzIsIG0gLCByLCBxbCwgcXIpKTsKfQppbnQgbWFpbigpIHsKCWludCBuOwoJY2luPj5uOwoJaW50IGFbbl07Cglmb3IoaW50IGk9MDsgaTxuOyBpKyspewoJCWNpbj4+YVtpXTsKCX0KCXRyZWUucmVzaXplKDQqbik7CglidWlsZChhLDAsMCxuKTsKCWludCBrOwoJY2luPj5rOwoJd2hpbGUoay0tKXsKCQlpbnQgbCxyOwoJCWNpbj4+bD4+cjsKCQljb3V0PDxnZXQoMCwwLG4sbC0xLHIpPDwnXG4nOwoJfQoJcmV0dXJuIDA7Cn0=