#include <bits/stdc++.h>
using namespace std;
struct Fast {Fast(){std::cin.tie(0);ios::sync_with_stdio(false);cout.precision(20);}} fast;

/* define */
#define FOR(I,X,Y) for(long long (I)=(X);(I)<(Y);(I)++)
#define REP(I,X,Y) for(long long (I)=(Y)-1;(I)>=(X);(I)--)
#define ALL(X) (X).begin(),(X).end()
#define pb push_back
#define COUNT(V,X) (upper_bound((V).begin(),(V).end(),X)-lower_bound((V).begin(),(V).end(),X))
#define debug(x) cerr<<#x<<':'<<x<<endl;
#define DEBUG(v) cerr<<#v<<':';for(auto xXx:v)cerr<<xXx<<' ';cerr<<endl;
#define Yes(X) if(X){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}
#define YES(X) if(X){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;}
#define ctoi(C) (C-'0')
#define pow2(x) ((long long)((long long)1<<x))

/* alias */
using ll = long long;
using ld = long double;
using vi = vector<int>;
using vii = vector<vector<int>>;
using vl = vector<long long>;
using vll = vector<vector<long long>>;
using pi = pair<int,int>;
using pl = pair<long long,long long>;
template<typename T> using PQ = priority_queue<T>;
template<typename T> using minPQ = priority_queue<T, vector<T>, greater<T>>;

/* const */
const long long dx[] = {1,0,-1,0};
const long long dy[] = {0,1,0,-1};
const long long dx8[] = {1,1,0,-1,-1,-1,0,1};
const long long dy8[] = {0,1,1,1,0,-1,-1,-1};
const long long dx9[] = {1,1,0,-1,-1,-1,0,1,0};
const long long dy9[] = {0,1,1,1,0,-1,-1,-1,0};
const int INF = 1000000007;
const long long LINF = 1000000000000000007;

/* func */
template <typename T> inline bool chmin(T& a, const T& b) {if (a > b) a = b; return a > b;}
template <typename T> inline bool chmax(T& a, const T& b) {if (a < b) a = b; return a < b;}
long long max(long long x,int y){return max(x,(long long)y);}
long long max(int x,long long y){return max((long long)x,y);}
long long min(long long x,int y){return min(x,(long long)y);}
long long min(int x,long long y){return min((long long)x,y);}

/* liblary */



/* main */

ll A,B,Q;
vl s,t,x;

signed main(){
	cin >> A >> B >> Q;
	s.resize(A);t.resize(B);x.resize(Q);
	FOR(i,0,A)cin >> s[i];
	FOR(i,0,B)cin >> t[i];
	FOR(i,0,Q)cin >> x[i];
	vl S(A);
	vl T(B);
	FOR(i,0,A){
		if(s[i] < t[0]){
			S[i] = t[0] - s[i];
			continue;
		}
		if(t[t.size()-1] < s[i]){
			S[i] = s[i] - t[t.size()-1];
		}
		ll tmp1 = *upper_bound(ALL(t),s[i]);
		ll tmp2 = *(upper_bound(ALL(t),s[i])-1);
		S[i] = min(abs(tmp1-s[i]),abs(tmp2-s[i]));
	}
	FOR(i,0,B){
		if(t[i] < s[0]){
			T[i] = s[0] - t[i];
			continue;
		}
		if(s[s.size()-1] < t[i]){
			T[i] = t[i] - s[t.size()-1];
		}
		ll tmp1 = *upper_bound(ALL(s),t[i]);
		ll tmp2 = *(upper_bound(ALL(s),t[i])-1);
		T[i] = min(abs(tmp1-t[i]),abs(tmp2-t[i]));
	}
	FOR(i,0,Q){
		ll idx1 = upper_bound(ALL(s),x[i]) - s.begin();
		ll idx2 = upper_bound(ALL(t),x[i]) - t.begin();
		vl tmp1,tmp2;
		if(idx1 < s.size())tmp1.pb(idx1);
		if(idx2 < t.size())tmp2.pb(idx2);
		if(idx1 != 0)tmp1.pb(idx1-1);
		if(idx2 != 0)tmp2.pb(idx2-1);
		ll ans = LINF;
		FOR(j,0,tmp1.size()){
			ll tmp = abs(x[i] - s[tmp1[j]]) + S[tmp1[j]];
			chmin(ans,tmp);
		}
		FOR(j,0,tmp2.size()){
			ll tmp = abs(x[i] - t[tmp2[j]]) + T[tmp2[j]];
			chmin(ans,tmp);
		}
		cout << ans << endl;
	}
}