#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
typedef pair<int, int> pii;
typedef pair<ll,pll> lll;
#define fi first
#define se second
void maxi (ll &x, ll y) {x = max (x, y);}
void mini (ll &x, ll y) {x = min (x, y);}
const ll maxN = 4e5 + 5, maxLog = 20, mod = 1e9 + 7, inf64 = 1e13, maxK = 5;
struct Edge {ll u, v, w;};
struct Dsu {
ll pr [maxN];
void init (ll x) {
for (int i = 1; i <= x; i ++) pr [i] = i;
}
ll fin (ll x) {
if (x == pr [x]) return x;
return pr [x] = fin (pr [x]);
}
bool merge (ll x, ll y) {
x = fin (x);
y = fin (y);
if (x == y) return 0;
pr [x] = y;
return 1;
}
};
ll n, w, a [maxN], ne [maxN] [maxLog], sum [maxN], q;
map <ll, ll> mp;
signed main () {
ios::sync_with_stdio (0);
cin. tie (0);
cout. tie (0);
#define task "sum0"
if (fopen (task".inp", "r")) {
freopen (task".inp", "r", stdin);
freopen (task".out", "w", stdout);
}
cin >> n;
for (int i = 1; i <= n; i ++) {
cin >> a [i];
sum [i] = sum [i - 1] + a [i];
}
ne [n + 1] [0] = n + 1;
for (int i = n; ~i; i --) {
if (mp [sum [i]] == 0) ne [i] [0] = ne [i + 1] [0];
else ne [i] [0] = min (ne [i + 1] [0], mp [sum [i]]);
mp [sum [i]] = i;
}
for (int i = n + 1; ~i; i --) for (int j = 1; j < maxLog; j ++) ne [i] [j] = ne [ne [i] [j - 1]] [j - 1];
cin >> q;
for (int i = 1, l, r; i <= q; i ++) {
cin >> l >> r;
l --;
ll cnt = 0;
for (int j = maxLog - 1; ~j; j --) if (ne [l] [j] <= r) {
cnt += (1 << j);
l = ne [l] [j];
}
cout << cnt << '\n';
}
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiBwYWlyPGxsLGxsPiBwbGw7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gcGlpOwp0eXBlZGVmIHBhaXI8bGwscGxsPiBsbGw7CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKdm9pZCBtYXhpIChsbCAmeCwgbGwgeSkge3ggPSBtYXggKHgsIHkpO30Kdm9pZCBtaW5pIChsbCAmeCwgbGwgeSkge3ggPSBtaW4gKHgsIHkpO30KCmNvbnN0IGxsIG1heE4gPSA0ZTUgKyA1LCBtYXhMb2cgPSAyMCwgbW9kID0gMWU5ICsgNywgaW5mNjQgPSAxZTEzLCBtYXhLID0gNTsKCnN0cnVjdCBFZGdlIHtsbCB1LCB2LCB3O307CgpzdHJ1Y3QgRHN1IHsKICAgIGxsIHByIFttYXhOXTsKICAgIHZvaWQgaW5pdCAobGwgeCkgewogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHg7IGkgKyspIHByIFtpXSA9IGk7CiAgICB9CiAgICBsbCBmaW4gKGxsIHgpIHsKICAgICAgICBpZiAoeCA9PSBwciBbeF0pIHJldHVybiB4OwogICAgICAgIHJldHVybiBwciBbeF0gPSBmaW4gKHByIFt4XSk7CiAgICB9CiAgICBib29sIG1lcmdlIChsbCB4LCBsbCB5KSB7CiAgICAgICAgeCA9IGZpbiAoeCk7CiAgICAgICAgeSA9IGZpbiAoeSk7CiAgICAgICAgaWYgKHggPT0geSkgcmV0dXJuIDA7CiAgICAgICAgcHIgW3hdID0geTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KfTsKCmxsIG4sIHcsIGEgW21heE5dLCBuZSBbbWF4Tl0gW21heExvZ10sIHN1bSBbbWF4Tl0sIHE7Cm1hcCA8bGwsIGxsPiBtcDsKCnNpZ25lZCBtYWluICgpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvICgwKTsKICAgIGNpbi4gdGllICgwKTsKICAgIGNvdXQuIHRpZSAoMCk7CiAgICAjZGVmaW5lIHRhc2sgInN1bTAiCiAgICBpZiAoZm9wZW4gKHRhc2siLmlucCIsICJyIikpIHsKICAgICAgICBmcmVvcGVuICh0YXNrIi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuICh0YXNrIi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CiAgICBjaW4gPj4gbjsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkgKyspIHsKICAgICAgICBjaW4gPj4gYSBbaV07CiAgICAgICAgc3VtIFtpXSA9IHN1bSBbaSAtIDFdICsgYSBbaV07CiAgICB9CiAgICBuZSBbbiArIDFdIFswXSA9IG4gKyAxOwogICAgZm9yIChpbnQgaSA9IG47IH5pOyBpIC0tKSB7CiAgICAgICAgaWYgKG1wIFtzdW0gW2ldXSA9PSAwKSBuZSBbaV0gWzBdID0gbmUgW2kgKyAxXSBbMF07CiAgICAgICAgZWxzZSBuZSBbaV0gWzBdID0gbWluIChuZSBbaSArIDFdIFswXSwgbXAgW3N1bSBbaV1dKTsKICAgICAgICBtcCBbc3VtIFtpXV0gPSBpOwogICAgfQogICAgZm9yIChpbnQgaSA9IG4gKyAxOyB+aTsgaSAtLSkgZm9yIChpbnQgaiA9IDE7IGogPCBtYXhMb2c7IGogKyspIG5lIFtpXSBbal0gPSBuZSBbbmUgW2ldIFtqIC0gMV1dIFtqIC0gMV07CiAgICBjaW4gPj4gcTsKICAgIGZvciAoaW50IGkgPSAxLCBsLCByOyBpIDw9IHE7IGkgKyspIHsKICAgICAgICBjaW4gPj4gbCA+PiByOwogICAgICAgIGwgLS07CiAgICAgICAgbGwgY250ID0gMDsKICAgICAgICBmb3IgKGludCBqID0gbWF4TG9nIC0gMTsgfmo7IGogLS0pIGlmIChuZSBbbF0gW2pdIDw9IHIpIHsKICAgICAgICAgICAgY250ICs9ICgxIDw8IGopOwogICAgICAgICAgICBsID0gbmUgW2xdIFtqXTsKICAgICAgICB9CiAgICAgICAgY291dCA8PCBjbnQgPDwgJ1xuJzsKICAgIH0KfQo=