#include <bits/stdc++.h>
using namespace std;
const long long inf = 0xFFFFFFFFFFFFFFFL;
const long long mod = 1000000007L;
vector<long long>::iterator itr;
long long t[400005];
void build(long long a[], long long v, long long tl, long long tr) {
  if (tl == tr) {
    t[v] = a[tl];
  } else {
    long long tm = (tl + tr) / 2;
    build(a, v * 2 + 1, tl, tm);
    build(a, v * 2 + 2, tm + 1, tr);
    t[v] = 0;
  }
}
void update(long long v, long long tl, long long tr, long long l, long long r,
            long long add) {
  if (l > r) return;
  if (l == tl && r == tr) {
    t[v] = add;
  } else {
    long long tm = (tl + tr) / 2;
    update(v * 2 + 1, tl, tm, l, min(r, tm), add);
    update(v * 2 + 2, tm + 1, tr, max(l, tm + 1), r, add);
  }
}
long long get(long long v, long long tl, long long tr, long long l,
              long long r) {
  if (l > r) return 0;
  if (l == tl && r == tr) {
    return t[v];
  } else {
    long long tm = (tl + tr) / 2;
    long long y = max(get(v * 2 + 1, tl, tm, l, min(r, tm)),
                      get(v * 2 + 2, tm + 1, tr, max(l, tm + 1), r));
    return max(y, t[v]);
  }
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  long long n;
  cin >> n;
  long long a[n];
  for (long long i = 0; i < n; i++) {
    cin >> a[i];
  }
  long long m;
  cin >> m;
  while (m--) {
    long long w, h;
    cin >> w >> h;
    long long x = max(a[0], a[w - 1]);
    cout << x << endl;
    a[0] = x + h;
  }
  return 0;
}
