#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, m, q;
int dist(int x, int y){
int ans;
if (x < y) ans = min(y - x, x + 2 * n - y);
else ans = min(x - y, y + 2 * n - x);
return ans;
}
signed main(){
cin >> n >> m >> q;
map<int, bool> f;
vector<int> T;
for (int i = 1; i <= m; i++){
int k; cin >> k;
f[k] = f[k + n] = 1;
T.push_back(k);
T.push_back(k + n);
}
sort(begin(T), end(T));
int lst = -1;
for (int Q = 1; Q <= q; Q++){
int x, y; cin >> x >> y;
int ans = dist(x, y);
auto it = lower_bound(T.begin(), T.end(), x);
int rx, lx;
if (it == T.end()){
rx = T[0];
}
else rx = *it;
if (it == T.begin()) lx = T.back();
else {
it--;
lx = *it;
}
ans = min(ans, dist(lx, x) + dist((lx + n) % (2 * n), y) + 1);
ans = min(ans, dist(rx, x) + dist((rx + n) % (2 * n), y) + 1);
cout << ans << endl;
}
}