#include <iostream>
#include <stdio.h>
#include <cstring>
#include <cstdio>
#include <math.h>
#include <algorithm>
#include <vector>
#include <string>
#include <stdlib.h>
#include <queue>
#include <stack>
#include <utility>
#include <fstream>
#include <random>
#include <map>
#include <unordered_map>
#include <cstdlib>
#include <functional>
#include <random>
#include <time.h>
#include <chrono>
#include <sstream>
#include <iomanip>
#define rep(i,n) for(int i=0;i<n;i++)
#define rrep(i,n) for(int i=n-1;i>=0;i--)
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define ll long long
#define INF 1000000001
#define mod 1000000007
#define sort(s) sort(s.begin(), s.end());
#define reverse(s) reverse(s.begin(), s.end());
int dx[4] = { 0,1,0,-1 };
int dy[4] = { 1,0,-1,0 };
using namespace std;
int POW(int x, int y) { return int(pow(double(x), double(y))); }
double log(double a, double b) { return log(b) / log(a); }

unsigned int randxor()
{
	static unsigned int x = 123456789, y = 362436069, z = 521288629, w = 88675123;
	unsigned int t;
	t = (x ^ (x << 11)); x = y; y = z; z = w; return(w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)));
}

//10進数を2進数に変換_63個の要素を持つ配列
vector<int> Convert10to2(ll n) {
	vector<int> ans(63);
	rep(i, 63) {
		ans[i] = n % 2;
		n -= n % 2;
		n /= 2;
	}
	return ans;
}
//2進数を10進数に変換_63個の要素を持つ配列
ll Convert2to10(vector<int> a) {
	ll ans = 0;
	ll j = 1;
	rep(i, a.size()) {
		ans += a[i] * j;
		if (i != a.size() - 1) {
			j *= 2;
		}
	}
	return ans;
}
//XORを計算
vector<int> CalcXOR2to2(vector<int> a, vector<int> b) {
	rep(i, 63) {
		if (a[i] != b[i]) {
			a[i] = 1;
		}
		else {
			a[i] = 0;
		}
	}
	return a;
}

//最大公約数
int gcd(int a, int b) {
	if (b == 0) {
		return a;
	}
	return gcd(b, a%b);
}

int sum(vector<int> x) {
	int ans = 0;
	rep(i, x.size()) {
		ans += x[i];
	}
	return ans;
}


int f(int a, int b, int c, vector<vector<int>> k) {
	if (k[0].size() == 0 || k[1].size() == 0 || k[2].size() == 0) {
		return INF;
	}
	int ans = 0;
	ans += abs(a - sum(k[0]));
	ans += abs(b - sum(k[1]));
	ans += abs(c - sum(k[2]));
	ans += (k[0].size() - 1) * 10;
	ans += (k[1].size() - 1) * 10;
	ans += (k[2].size() - 1) * 10;
	return ans;

}


int main() {
	ll a, b, q;
	cin >> a >> b >> q;
	vector<ll> s(a), t(b), x(q);
	rep(i, a) {
		cin >> s[i];
	}
	rep(i, b) {
		cin >> t[i];
	}
	rep(i, q) {
		cin >> x[i];
	}

	rep(i, q) {
		ll z = x[i];


		ll sf = 0;
		if (z > *(--s.end())) {
			sf += z - *(--s.end());
			z = *(--s.end());
			if (z > *(--t.end())) {
				sf += z - *(--t.end());
			}
			else if (z < *t.begin()) {
				sf += *t.begin() - z;
			}
			else {
				ll tu = *lower_bound(t.begin(), t.end(), z) - z;
				ll td = z - *(--lower_bound(t.begin(), t.end(), z));
				sf += min(tu, td);
			}
		}
		else if (z <= *s.begin()) {
			sf += *s.begin() - z;
			z = *s.begin();
			if (z > *(--t.end())) {
				sf += z - *(--t.end());
			}
			else if (z < *t.begin()) {
				sf += *t.begin() - z;
			}
			else {
				ll tu = *lower_bound(t.begin(), t.end(), z) - z;
				ll td = z - *(--lower_bound(t.begin(), t.end(), z));
				sf += min(tu, td);
			}
		}
		else {
			ll tu = *lower_bound(s.begin(), s.end(), z) - z;
			ll td = z - *(--lower_bound(s.begin(), s.end(), z));
			
			sf += td;
			z = z - td;

			if (z > *(--t.end())) {
				sf += z - *(--t.end());
			}
			else if (z < *t.begin()) {
				sf += *t.begin() - z;
			}
			else {
				ll tu = *lower_bound(t.begin(), t.end(), z) - z;
				ll td = z - *(--lower_bound(t.begin(), t.end(), z));
				sf += min(tu, td);
			}
		}

		ll tf = 0;
		z = x[i];

		if (z > *(--t.end())) {
			tf += z - *(--t.end());
			z = *(--t.end());
			if (z > *(--s.end())) {
				tf += z - *(--s.end());
			}
			else if (z < *s.begin()) {
				tf += *s.begin() - z;
			}
			else {
				ll tu = *lower_bound(s.begin(), s.end(), z) - z;
				ll td = z - *(--lower_bound(s.begin(), s.end(), z));
				tf += min(tu, td);
			}
		}
		else if (z <= *t.begin()) {
			tf += *t.begin() - z;
			z = *t.begin();
			if (z > *(--s.end())) {
				tf += z - *(--s.end());
			}
			else if (z < *s.begin()) {
				tf += *s.begin() - z;
			}
			else {
				ll tu = *lower_bound(s.begin(), s.end(), z) - z;
				ll td = z - *(--lower_bound(s.begin(), s.end(), z));
				tf += min(tu, td);
			}
		}
		else {
			ll tu = *lower_bound(t.begin(), t.end(), z) - z;
			ll td = z - *(--lower_bound(t.begin(), t.end(), z));
			
			tf += td;
			z = z - td;

			if (z > *(--s.end())) {
				tf += z - *(--s.end());
			}
			else if (z < *s.begin()) {
				tf += *s.begin() - z;
			}
			else {
				ll tu = *lower_bound(s.begin(), s.end(), z) - z;
				ll td = z - *(--lower_bound(s.begin(), s.end(), z));
				tf += min(tu, td);
			}
		}
		///////////////////////////////
		z = x[i];
		ll sf2 = 0;
		if (z > *(--s.end())) {
			sf2 += z - *(--s.end());
			z = *(--s.end());
			if (z > *(--t.end())) {
				sf2 += z - *(--t.end());
			}
			else if (z < *t.begin()) {
				sf2 += *t.begin() - z;
			}
			else {
				ll tu = *lower_bound(t.begin(), t.end(), z) - z;
				ll td = z - *(--lower_bound(t.begin(), t.end(), z));
				sf2 += min(tu, td);
			}
		}
		else if (z <= *s.begin()) {
			sf2 += *s.begin() - z;
			z = *s.begin();
			if (z > *(--t.end())) {
				sf2 += z - *(--t.end());
			}
			else if (z < *t.begin()) {
				sf2 += *t.begin() - z;
			}
			else {
				ll tu = *lower_bound(t.begin(), t.end(), z) - z;
				ll td = z - *(--lower_bound(t.begin(), t.end(), z));
				sf2 += min(tu, td);
			}
		}
		else {
			ll tu = *lower_bound(s.begin(), s.end(), z) - z;
			ll td = z - *(--lower_bound(s.begin(), s.end(), z));
			
			sf2 += tu;
			z = z + tu;
			
			if (z > *(--t.end())) {
				sf2 += z - *(--t.end());
			}
			else if (z < *t.begin()) {
				sf2 += *t.begin() - z;
			}
			else {
				ll tu = *lower_bound(t.begin(), t.end(), z) - z;
				ll td = z - *(--lower_bound(t.begin(), t.end(), z));
				sf2 += min(tu, td);
			}
		}

		////////////////////////////////
		ll tf2 = 0;
		z = x[i];

		if (z > *(--t.end())) {
			tf2 += z - *(--t.end());
			z = *(--t.end());
			if (z > *(--s.end())) {
				tf2 += z - *(--s.end());
			}
			else if (z < *s.begin()) {
				tf2 += *s.begin() - z;
			}
			else {
				ll tu = *lower_bound(s.begin(), s.end(), z) - z;
				ll td = z - *(--lower_bound(s.begin(), s.end(), z));
				tf2 += min(tu, td);
			}
		}
		else if (z <= *t.begin()) {
			tf2 += *t.begin() - z;
			z = *t.begin();
			if (z > *(--s.end())) {
				tf2 += z - *(--s.end());
			}
			else if (z < *s.begin()) {
				tf2 += *s.begin() - z;
			}
			else {
				ll tu = *lower_bound(s.begin(), s.end(), z) - z;
				ll td = z - *(--lower_bound(s.begin(), s.end(), z));
				tf2 += min(tu, td);
			}
		}
		else {
			ll tu = *lower_bound(t.begin(), t.end(), z) - z;
			ll td = z - *(--lower_bound(t.begin(), t.end(), z));
			
			tf2 += tu;
			z = z + tu;
			
			if (z > *(--s.end())) {
				tf2 += z - *(--s.end());
			}
			else if (z < *s.begin()) {
				tf2 += *s.begin() - z;
			}
			else {
				ll tu = *lower_bound(s.begin(), s.end(), z) - z;
				ll td = z - *(--lower_bound(s.begin(), s.end(), z));
				tf2 += min(tu, td);
			}
		}

		cout << min(min(sf, tf),min(sf2,tf2)) << endl;


	}
		

	return 0;



}



Measured memory_bytes: 3712