#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <stack>
#include <queue>
#include <cmath>
#include <tuple>
#include <cstdio>
#include <bitset>
#include <sstream>
#include <iterator>
#include <numeric>
#include <map>
#include <cstring>

using namespace std;

//#define DEBUG_ //!!提出時にコメントアウト!!
#ifdef DEBUG_
	#define dump(x)  cout << #x << " = " << (x) << endl;
#else
	#define dump(x)  ; //何もしない文
#endif

#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n)  FOR(i,0,n)
#define SZ(x) ((int)(x).size()) //unsignedのサイズをint型に変換
#define pb push_back

typedef long long LL; 
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<string> VS;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;

template <typename T>
std::string printVector(const std::vector<T> &data)
{
    std::stringstream ss;
    std::ostream_iterator<T> out_it(ss, ", ");
    ss << "[";
    std::copy(data.begin(), data.end() - 1, out_it);
    ss << data.back() << "]";
    return ss.str();
}

const int MOD = 1e9+7;
const LL LINF = 1001002003004005006ll;
const int INF = 1001001001;

int A,B,Q;
vector<LL> s,t,x;

bool isOK1(int mid,LL key)
{
    if(s[mid] <= key) return true;
    else return false;
}

bool isOK2(int mid,LL key)
{
    if(t[mid] <= key) return true;
    else return false;
}

int binary_search1(LL key) {
    int ok = -1; //「index = 0」が条件を満たすこともあるので、初期値は -1
    int ng = A; // 「index = a.size()-1」が条件を満たさないこともあるので、初期値は a.size()

    /* どんな二分探索でもここの書き方を変えずにできる！ */
    while (abs(ng - ok) > 1) {
        int mid = (ok + ng) / 2;

        if (isOK1(mid, key)) ok = mid;
        else ng = mid;

    }


    /* left は条件を満たさない最大の値、right は条件を満たす最小の値になっている */
    return ok;
}

int binary_search2(LL key) {
    int ok = -1; //「index = 0」が条件を満たすこともあるので、初期値は -1
    int ng = B; // 「index = a.size()-1」が条件を満たさないこともあるので、初期値は a.size()

    /* どんな二分探索でもここの書き方を変えずにできる！ */
    while (abs(ng - ok) > 1) {
        int mid = (ok + ng) / 2;

        if (isOK2(mid, key)) ok = mid;
        else ng = mid;
    }

    /* left は条件を満たさない最大の値、right は条件を満たす最小の値になっている */
    return ok;
}

int main(int argc, char const *argv[])
{
    cin.tie(0);
    ios::sync_with_stdio(false);	
    cin>>A>>B>>Q;
    REP(i,A)
    {
        LL tmp; cin >> tmp;
        s.pb(tmp);
    }
    REP(i,B)
    {
        LL tmp; cin >> tmp;
        t.pb(tmp);
    }
    REP(i,Q)
    {
        LL tmp; cin >> tmp;
        x.pb(tmp);
    }
    sort(s.begin(), s.begin()+A);
    REP(i,A) dump(s[i])
    sort(t.begin(), t.begin()+B);
    REP(i,B) dump(t[i])

    REP(i,Q)
    {
        LL start = x[i];
        dump(start)
        LL ans = LINF;
        LL kouho = LINF;

        int sleft = binary_search1(start);
        int sright = sleft + 1;
        int tleft = binary_search2(start);
        int tright = tleft + 1;
        dump(sleft)
        dump(tleft)
        dump(ans)

        if(tleft >= 0 && sleft >= 0) kouho = abs(start - s[sleft]) + abs(s[sleft] - t[tleft]);
        if(ans > kouho) ans = kouho;
        dump(ans)

        if(sleft >= 0 && tright < B)
        kouho = abs(start - s[sleft]) + abs(s[sleft] - t[tright]);
        if(ans > kouho) ans = kouho;
        dump(ans)

        if(tleft >= 0 && sright < A)
        kouho = abs(start - s[sright]) + abs(s[sright] - t[tleft]);
        if(ans > kouho) ans = kouho;
        dump(ans)

        if(sright < A && tright < B)
        kouho = abs(start - s[sright]) + abs(s[sright] - t[tright]);
        if(ans > kouho) ans = kouho;
        dump(ans)


        if(tleft >= 0 && sleft >= 0)
        kouho = abs(start - t[tleft]) + abs(t[tleft] - s[sleft]);
        if(ans > kouho) ans = kouho;
        dump(ans)

        if(tleft >= 0 && sright < A)
        kouho = abs(start - t[tleft]) + abs(t[tleft] - s[sright]);
        if(ans > kouho) ans = kouho;
        dump(ans)

        if(sleft >= 0 && tright < B)
        kouho = abs(start - t[tright]) + abs(t[tright] - s[sleft]);
        if(ans > kouho) ans = kouho;
        dump(ans)

        if(tright < B && sright < A)
        kouho = abs(start - t[tright]) + abs(t[tright] - s[sright]);
        if(ans > kouho) ans = kouho;
        dump(ans)

        cout << ans << endl;
    }



}


Measured memory_bytes: 3828