#include using namespace std; const int LOG = 17, MX = 1 << LOG, MAGIC = 6; const int LOGQ = 18, MXQ = 1 << LOGQ; int a[MX], x[MXQ], y[MXQ], r[MX], ans[MXQ + 1]; vector p[MXQ]; long long f[MX]; int main() { int n, q; ignore = scanf("%d", &n); for (int i = 0; i < n; i++) ignore = scanf("%d", a + i); ignore = scanf("%d", &q); for (int i = 0; i < q; i++) { ignore = scanf("%d %d", x + i, y + i); x[i] &= (MX - 1); } fill(r, r + n, -1); for (int i = LOGQ - 1; i >= 0; i--) { memset(f, 0, sizeof f); for (int j = 0; j < n; j++) p[r[j] + (1 << i)].push_back(j); for (int j = 0; j < q; j++) { int hi = (x[j] >> (LOG - MAGIC)); for (int msk = hi; msk >= 0; msk = (msk - 1) & hi) { f[x[j] ^ ((hi ^ msk) << (LOG - MAGIC))] += y[j]; if (msk == 0) break; } for (int k : p[j]) { int lo = ~k & ((1 << (LOG - MAGIC)) - 1); long long sum = 0; for (int msk = lo; msk >= 0; msk = (msk - 1) & lo) { sum += f[k ^ msk]; if (msk == 0) break; } if (a[k] > sum) { r[k] = j; if (q == MXQ && j == q - 2 && a[k] > sum + ((x[q - 1] & k) == k ? y[q - 1] : 0)) r[k] = q - 1; } } p[j].clear(); } } ans[0] = n; for (int i = 0; i < n; i++) ans[r[i] + 1]--; partial_sum(ans, ans + q, ans); for (int i = 0; i < q; i++) printf("%d\n", ans[i]); return 0; }