#include<bits/stdc++.h>
using namespace std;
int n;
int dist(int u,int v){
if(u>v) swap(u,v);
return min(abs(u-v),u+2*n-v);
}
int main(){
vector<int> vt;
int m,q; cin>>n >>m >>q;
for(int i=0;i<m;i++){
int x; cin>>x;
vt.push_back(x);
}
while(q--){
int u,v; cin>>u >>v;
if(u>v) swap(u,v);
int ans=dist(u,v),cd;
//cout<<ans <<" ";
auto it=upper_bound(vt.begin(),vt.end(),u);
if(!vt.empty()){
if(it==vt.begin()) it=vt.end();
it--;
if((*it)<n){
cd=dist(u,*it)+dist(v,(*it)+n)+1,ans=min(ans,cd);
swap(u,v);
cd=dist(u,*it)+dist(v,(*it)+n)+1,ans=min(ans,cd);
swap(u,v);
}
}
it=lower_bound(vt.begin(),vt.end(),u);
if(!vt.empty()){
if(it==vt.end()) it=vt.begin();
if((*it)<n){
cd=dist(u,*it)+dist(v,(*it)+n)+1,ans=min(ans,cd);
swap(u,v);
cd=dist(u,*it)+dist(v,(*it)+n)+1,ans=min(ans,cd);
swap(u,v);
}
}
cout<<ans <<"\n";
}
}