#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pii;
#define all(x) x.begin(), x.end()
#define sz(x) ((int) ((x).size()))
#define pb push_back
#define F first
#define S second
#define FIO ios_base::sync_with_stdio(false); cin.tie(0)
const int N = 3e5 + 10;
ll n, m, q;
ll a[N];
ll cur;
set<pair<pii, pii>> s;
ll b[N];
void add(ll val, ll pos, ll dep, ll cnt) {
if (val == 0) return;
if (val == 1) dep = 0;
auto iter = s.lower_bound({{val, pos}, {0, 0}});
if (!(iter == s.end() or iter->F.F != val or iter->F.S != pos)) {
cnt += iter->S.S;
s.erase(iter);
}
s.insert({{val, pos}, {dep, cnt}});
}
ll find(ll val, ll dep, ll x, ll cnt, bool vec) {
if (val <= 0) return -1;
if (dep == 0) return 0;
ll cntL = cnt / 2;
if (!vec) cntL = cnt - cntL;
if (x <= cntL) return find((val - 1) / 2, dep - 1, x, cntL, vec);
return find(val / 2, dep - 1, x - cntL, cnt - cntL, vec) + (val - 1) / 2 + 1;
}
int main() {
FIO;
cin >> m >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
a[0] = 0;
a[n + 1] = m + 1;
for (int i = 0; i <= n; i++) {
b[i] = a[i + 1] - a[i] - 1;
add(-b[i], i, 0, 1);
}
cur = n;
for (int i = 0; i < q; i++) {
ll t;
cin >> t;
if (t <= n) {
cout << a[t] << '\n';
} else {
while (sz(s) and t > cur + s.begin()->S.S) {
ll cnt = s.begin()->S.S;
ll dep = s.begin()->S.F;
ll pos = s.begin()->F.S;
ll val = -s.begin()->F.F;
s.erase(s.begin());
if (val % 2 == 0) {
add(-(val / 2), pos, dep + 1, cnt);
add(-((val - 1) / 2), pos, dep + 1, cnt);
} else {
add(-(val / 2), pos, dep + 1, cnt * 2);
}
cur += cnt;
}
ll dep = s.begin()->S.F;
ll ind = s.begin()->F.S;
ll val = -s.begin()->F.F;
ll cnt = s.begin()->S.S;
bool vec = (1LL << dep) - 1 + val * (1LL << dep) > b[ind];
cout << a[ind] + find(b[ind], dep, t - cur, cnt, vec) + (val + 1) / 2 << '\n';
}
}
return 0;
}