#include <bits/stdc++.h>
using namespace std;
#define int long long int
int dist(int a,int b,int n)
{
return min(abs(a-b),abs(2*n-abs(a-b)));
}
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n,m,q;
cin>>n>>m>>q;
// vector<int> f(2*n,-1);
// vector<int> ks(m);
int fri=0;
int mn=1e18,mx=0;
vector<int>vals;
for(int i=0;i<m;i++) {
int k;cin>>k;
vals.push_back(k);
vals.push_back(k+n);
mn=min(k,mn);
mx=max(k,mx);
//ks[i]=k;//friend having ppl
//fri=k+n;
// f[k]=k+n;
//f[k+n]=k;
}
sort(vals.begin(),vals.end());
while(q--){
int x,y;
cin>>x>>y;
int ans=dist(x,y,n);//direct
//send to friends
//using one friend takes us halfway
//so using 2 friends takes us back to where we came from
//whats the closest friend to 0 (back and front) (min and max)
//whats the closest friend for others , upper and lower bound-1 but what about full circle
//if nothing is less than it , take the greatest
//if nothing is more than it ,take the smallest
//for every node can i find closest friend
//for (int k:ks) {
auto it=lower_bound(vals.begin(),vals.end(),x);
int a,b;
if(it!=vals.end()&&*it==x){
a=x;
if(a>=n)b=a-n;
else
b=a+n;
ans=min(ans,1+dist(b,y,n));
}
if(it!=vals.begin())
{
a=*(it-1);
}
if(it==vals.begin())//non exist
{
a=vals.back();//largest
}
if(a>=n)b=a-n;
else
b=a+n;
// b=a+n;
ans=min(ans,dist(x,a,n)+1+dist(b,y,n));
ans=min(ans,dist(x,b,n)+1+dist(a,y,n));
auto it2=upper_bound(vals.begin(),vals.end(),x);
if(it2==vals.end())
{
a=vals.front();
}
else
{
a=*it2;
}
if(a>=n)b=a-n;
else
b=a+n;
ans=min(ans,dist(x,a,n)+1+dist(b,y,n));
ans=min(ans,dist(x,b,n)+1+dist(a,y,n));
//cout<<"___________________________________"<<endl;
auto it3=lower_bound(vals.begin(),vals.end(),y);
//int a,b;
if(it3!=vals.begin())
{
a=*(it3-1);
}
if(it3==vals.begin())//non exist
{
a=vals.back();//largest
}
if(a>=n)b=a-n;
else
b=a+n;
ans=min(ans,dist(x,a,n)+1+dist(b,y,n));
ans=min(ans,dist(x,b,n)+1+dist(a,y,n));
auto it4=upper_bound(vals.begin(),vals.end(),y);
if(it4==vals.end())
{
a=vals.front();
}
else
{
a=*it4;
}
if(a>=n)b=a-n;
else
b=a+n;
ans=min(ans,dist(x,a,n)+1+dist(b,y,n));
ans=min(ans,dist(x,b,n)+1+dist(a,y,n));
//}
cout<<ans<<endl;
}
}