#include"bits/stdc++.h" using namespace std; int main(){ // input int N,X,Y; cin >> N >> X >> Y; vector<int> A(X,-1),B(Y,-1); for(int i = 0; i < X; i++) cin >> A[i]; for(int i = 0; i < Y; i++) cin >> B[i]; A.push_back(INT_MAX); B.push_back(INT_MAX); // prep int warpAB = N; for(int i = 0; i < X; i++){ auto it = lower_bound(B.begin(),B.end(),A[i]); int tmp = *it - A[i]; if(it != B.begin()){ it--; tmp = min(tmp,abs(*it - A[i])); } warpAB = min(warpAB,tmp); } // solve + output int Q; cin >> Q; while(Q--){ int s,t; cin >> s >> t; int ans = t - s; int SA,SB,TA,TB; auto it = lower_bound(A.begin(),A.end(),s); SA = *it - s; if(it != A.begin()){ it--; SA = min(SA, abs(*it - s)); } it = lower_bound(A.begin(),A.end(),t); TA = *it - t; if(it != A.begin()){ it--; TA = min(TA, abs(*it - t)); } it = lower_bound(B.begin(),B.end(),s); SB = *it - s; if(it != B.begin()){ it--; SB = min(SB, abs(*it - s)); } it = lower_bound(B.begin(),B.end(),t); TB = *it - t; if(it != B.begin()){ it--; TB = min(TB, abs(*it - t)); } // use A only ans = min(ans,SA + TA); // use B only ans = min(ans,SB + TB); // use A -> B ans = min(ans,SA + TB + warpAB); // use B -> A ans = min(ans,SB + TA + warpAB); cout << ans << endl; } }