/*
i am doomed and i am screwed
i walk around in a living nightmare
i hate the present and i hate the past
wondering why i'm a dumbass
*/
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define lb lower_bound
#define ff first
#define ss second
typedef long long ll;
typedef pair<ll, ll> ii;
typedef pair<ll, ii> pii;
typedef vector<ii> vii;
const int maxn = 1e5 + 7;
ll m, n, q, a[maxn], b[maxn], d[maxn], l[maxn], in[maxn];
vii v;
set<pii> s;
void add(ll dlj, ll le, ll c){
if (dlj == 0) return;
pii lbb = *s.lb({-dlj, {le, 0}});
if (lbb.ff != -dlj || lbb.ss.ff != le){
s.insert({-dlj, {le, c}});
return;
}
s.erase(s.find(lbb));
lbb.ss.ss += c;
s.insert(lbb);
}
ll cnt(ll d1, ll d2){
v.clear();
v.pb({d1, 1});
ll ret = 0;
for (int i = 0; i < v.size(); i++){
if (v[i].ff == d2){
ret += v[i].ss;
continue;
}
ll s = v.size();
ll dl = v[i].ff / 2 - 1, dr = v[i].ff / 2;
dl += (v[i].ff & 1LL);
if (dl >= d2){
if (v.back().ff == dl) v.back().ss += v[i].ss;
else if (s >= 2 && v[s - 2].ff == dl) v[s - 2].ss += v[i].ss;
else v.pb({dl, v[i].ss});
}
if (dr >= d2){
if (v.back().ff == dr) v.back().ss += v[i].ss;
else if (s >= 2 && v[s - 2].ff == dr) v[s - 2].ff += v[i].ss;
else v.pb({dr, v[i].ss});
}
}
return ret;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> m >> n >> q;
for (int i = 1; i <= n; i++){
cin >> a[i];
if (a[i] > a[i - 1] + 1)
s.insert({-a[i] + a[i - 1] + 1, {i - 1, 1}});
}
a[n + 1] = m + 1;
if (m > a[n])
s.insert({a[n] - m, {n, 1}});
ll tr = 0;
for (int i = 1; i <= q; i++){
cin >> b[i];
if (b[i] > n && tr == 0)
tr = i;
}
ll uk = n;
while(!s.empty()){
pii bg = *s.begin();
s.erase(s.begin());
ll dlj = -bg.ff, le = bg.ss.ff, c = bg.ss.ss;
ll r = uk + c;
while(tr <= q && b[tr] <= r){
d[tr] = dlj, l[tr] = le, in[tr] = b[tr] - uk;
tr++;
}
uk = r;
if (dlj & 1LL)
add(dlj / 2, le, c * 2LL);
else {
add(dlj / 2 - 1, le, c);
add(dlj / 2, le, c);
}
}
for (int i = 1; i <= q; i++){
if (b[i] <= n){
cout << a[b[i]] << "\n";
continue;
}
ll le = a[l[i]] + 1, ri = a[l[i] + 1] - 1;
while((ri - le + 1) > d[i]){
ll mi = (le + ri) / 2;
ll cn = cnt(mi - le, d[i]);
if (cn >= in[i])
ri = mi - 1;
else {
le = mi + 1;
in[i] -= cn;
}
}
cout << (le + ri) / 2 << "\n";
}
return 0;
}