#include <bits/stdc++.h>
using namespace std;
const int N = 500 * 1000 + 13;
const int P = 800;
const int INF = 1e9;
bool comp(const pair<pair<int, int>, int> &a,
          const pair<pair<int, int>, int> &b) {
  int num = a.first.first / P;
  if (num != b.first.first / P) return a.first.first < b.first.first;
  if (num & 1) return a.first.second < b.first.second;
  return a.first.second > b.first.second;
}
int val[N];
int cnt[N];
int bl[P];
int tot;
inline void add(int first) {
  ++cnt[first];
  if (cnt[first] == 1) {
    ++val[first];
    ++bl[first / P];
    ++tot;
  } else if (cnt[first] == 2) {
    --val[first];
    --bl[first / P];
    --tot;
  }
}
inline void sub(int first) {
  --cnt[first];
  if (cnt[first] == 1) {
    ++val[first];
    ++bl[first / P];
    ++tot;
  } else if (cnt[first] == 0) {
    --val[first];
    --bl[first / P];
    --tot;
  }
}
int get() {
  if (tot == 0) return 0;
  for (int i = 0; i < int(P); i++) {
    if (bl[i] > 0) {
      for (int j = i * P;; ++j) {
        if (val[j]) {
          return j;
        }
      }
    }
  }
  assert(false);
}
int n, m;
int a[N], ans[N];
pair<pair<int, int>, int> q[N];
int main() {
  scanf("%d", &n);
  for (int i = 0; i < int(n); i++) scanf("%d", &a[i]);
  scanf("%d", &m);
  for (int i = 0; i < int(m); i++) {
    scanf("%d%d", &q[i].first.first, &q[i].first.second);
    --q[i].first.first, --q[i].first.second;
    q[i].second = i;
  }
  sort(q, q + m, comp);
  int l = 0, r = -1;
  for (int i = 0; i < int(m); i++) {
    int L = q[i].first.first;
    int R = q[i].first.second;
    while (r < R) {
      ++r;
      add(a[r]);
    }
    while (r > R) {
      sub(a[r]);
      --r;
    }
    while (l > L) {
      --l;
      add(a[l]);
    }
    while (l < L) {
      sub(a[l]);
      ++l;
    }
    ans[q[i].second] = get();
  }
  for (int i = 0; i < int(m); i++) printf("%d\n", ans[i]);
  return 0;
}
