#include <bits/stdc++.h>
using namespace std;
const long long max_n = 200010;
long long n, m;
long long a[max_n];
pair<long long, long long> b[max_n];
long long t[max_n * 4];
vector<pair<long long, long long>> q[max_n];
long long ans[max_n];
void recount(long long i, long long l, long long r) {
  t[i] = t[2 * i + 1] + t[2 * i + 2];
}
void change(long long i, long long l, long long r, long long q, long long v) {
  if (q < l || q >= r) return;
  if (l + 1 == r) {
    t[i] = v;
    return;
  }
  long long m = (l + r) >> 1;
  change(2 * i + 1, l, m, q, v);
  change(2 * i + 2, m, r, q, v);
  recount(i, l, r);
}
long long get_pos(long long i, long long l, long long r, long long pos) {
  if (l + 1 == r) {
    return l;
  }
  long long m = (l + r) >> 1;
  if (t[2 * i + 1] >= pos)
    return get_pos(2 * i + 1, l, m, pos);
  else
    return get_pos(2 * i + 2, m, r, pos - t[2 * i + 1]);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (long long i = 0; i < n; i++) {
    cin >> a[i];
    b[i] = {-a[i], i};
  }
  sort(b, b + n);
  cin >> m;
  for (long long i = 0; i < m; i++) {
    long long k, pos;
    cin >> k >> pos;
    q[k].push_back({pos, i});
  }
  for (long long k = 1; k <= n; k++) {
    change(0, 0, n, b[k - 1].second, 1);
    for (auto i : q[k]) {
      ans[i.second] = a[get_pos(0, 0, n, i.first)];
    }
  }
  for (long long i = 0; i < m; i++) {
    cout << ans[i] << '\n';
  }
  return 0;
}
