#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5;
int n, m, q, ans[N];
long long suf[N];
struct cc {
  long long d;
  int id;
  inline int operator<(const cc& rhs) const {
    return d != rhs.d ? d < rhs.d : id < rhs.id;
  }
} c[N], Q[N];
namespace sgt {
int d[N << 2];
void add(int l, int r, int o, const int& pos) {
  ++d[o];
  if (l < r) {
    const int mid = l + r >> 1;
    if (pos <= mid)
      add(l, mid, o << 1, pos);
    else
      add(mid + 1, r, o << 1 | 1, pos);
  }
}
int query(int l, int r, int o, const int& k) {
  if (l == r) return l;
  const int mid = l + r >> 1;
  if (d[o << 1] >= k) return query(l, mid, o << 1, k);
  return query(mid + 1, r, o << 1 | 1, k - d[o << 1]);
}
}  // namespace sgt
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n >> m >> q;
  for (int i = 1; i <= m; ++i) c[i].id = i;
  for (int i = 1; i <= n; ++i) {
    int u;
    cin >> u;
    ++c[u].d;
  }
  sort(c + 1, c + m + 1);
  long long tot = 0;
  for (int i = m; i; --i) {
    suf[i] = tot;
    tot += c[i].d;
    c[i].d = c[i].d * (i - 1) + tot;
  }
  for (int i = 1; i <= q; ++i) cin >> Q[Q[i].id = i].d;
  sort(Q + 1, Q + q + 1);
  sgt::add(1, m, 1, c[1].id);
  for (int i = 1, it = 1; i <= q; ++i) {
    long long d = Q[i].d;
    while (it < m && d > c[it + 1].d) sgt::add(1, m, 1, c[++it].id);
    d = (d - suf[it]) % it;
    if (!d) d = it;
    ans[Q[i].id] = sgt::query(1, m, 1, d);
  }
  for (int i = 1; i <= q; ++i) cout << ans[i] << '\n';
  return 0;
}
