#include<bits/stdc++.h>
using namespace std;
const int maxN = 4e5 + 5, lg = __lg(400000) / __lg(2) + 1;
int n, q, c[maxN];
int lca[maxN];
int old[maxN];
int sum[maxN];
int ps[maxN];
int res[maxN];
pair<int, int> t[maxN];
int main(){
// cout << lg << '\n';
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i ++){
cin >> c[i];
sum[i] = sum[i - 1] + c[i];
}
map<int, int> cnt;
ps[n + 1] = 1e9;
for (int i = n; i >= 1; i --){
cnt[sum[i]] = i;
ps[i] = cnt[sum[i - 1]];
if (ps[i] == 0) ps[i] = 1e9;
ps[i] = min(ps[i + 1], ps[i]);
// cout << ps[i] << '\n';
}
cin >> q;
for (int i = 1; i <= q; i ++){
cin >> t[i].first >> t[i].second;
}
for (int i = 2; i >= 0; i --){
memset(lca, 0x3f, sizeof(lca));
memset(old, 0x3f, sizeof(old));
for (int p = 1; p <= n; p ++) lca[p] = ps[p];
for (int j = 1; j <= i; j ++){
swap(lca, old);
for (int p = 1; p <= n; p ++){
if (old[p] <= n) lca[p] = old[old[p] + 1];
else lca[p] = 1e9;
}
lca[n + 1] = 1e9;
}
for (int id = 1; id <= q; id ++){
if (t[id].first > t[id].second) continue;
if (lca[t[id].first] > t[id].second) continue;
t[id].first = lca[t[id].first] + 1;
res[id] += (1 << i);
}
}
for (int i = 1; i <= q; i ++) cout << res[i] << '\n';
}