#include <bits/stdc++.h>
using namespace std;
const int N = 4e5+5;
int up[N][20];
// vector<int> idx[N];
// for(int i=1; i<=n; i++)
void solve(){
int n; cin >> n;
vector<long long> pre(n+5);
for(int i=1; i<=n; i++) {int x; cin >> x; pre[i] = pre[i-1] + x; };
vector<int> same(n+5), nxt(n+5);
unordered_map<int, int> last;
for(int i=0; i<=n; i++) {
if(last.count(pre[i])) same[i] = last[pre[i]];
else same[i] = -1;
last[pre[i]] = i;
}
last.clear();
pre.clear();
for(int i=0; i<=n; i++){
nxt[i] = n+1;
for(int j=i+1; j<=n; j++){
if(same[j] >= i) {nxt[i] = j; break;}
}
}
same.clear();
vector<vector<int>> up(n+1, vector<int>(20));
for(int i=n; i>=0; i--){
up[i][0] = nxt[i];
for(int k=1; k<20; k++) {
if (up[i][k-1] > n) up[i][k] = n + 1;
else up[i][k] = up[up[i][k-1]][k-1];
}
}
nxt.clear();
int q; cin >> q;
while(q--){
int l, r; cin >> l >> r; l--;
long long ans = 0;
for(int b=19; b>=0; b--){
if(up[l][b] > r) continue;
ans += 1<<b;
l = up[l][b];
}
cout << ans << '\n';
}
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
}