# 各クエリに対して,二分探索で解を求める

def bs(x,li):
    # 値xがliの2連続した値a,b達が作る[a,b)のどこに入るか
    # aを返す
    # liはソート済みとする
    left,right=0,len(li)
    while left+1<right:
        mid = (left+right)//2
        if li[mid]<=x:
            left=mid
        else:
            right=mid
    return left

def get(L):
    ret=[-10**13]
    for _ in range(L):
        ret.append(int(input()))
    ret.append(10**13)
    return ret

A,B,Q=map(int,input().split())
S=get(A)
T=get(B)
for _ in range(Q):
    x=int(input())

    # sn,sp,tn,tpを二分探索で出す
    sn,tn=bs(x,S),bs(x,T)

    # これらの経路の組み合わせの中に最小値が含まれている
    # 全部で8パターンあるので全探索してminをansとして保持
    ans=10**13
    for s in [S[sn],S[sn+1]]:
        for t in [T[tn],T[tn+1]]:
            d=abs(s-x)+abs(t-s)
            e=abs(t-x)+abs(s-t)
            ans=min([ans,d,e])
    print(ans) def bs(x,li):
    # 値xがliの2連続した値a,b達が作る[a,b)のどこに入るか
    # aを返す
    # liはソート済みとする
    left,right=0,len(li)
    while left+1<right:
        mid = (left+right)//2
        if li[mid]<=x:
            left=mid
        else:
            right=mid
    return left bs left,right=0,len(li) left 0 right len(li) len li while left+1<right:
        mid = (left+right)//2
        if li[mid]<=x:
            left=mid
        else:
            right=mid
     left+1<right left+1 left 1 right mid = (left+right)//2 mid (left+right)//2 left+right left right 2 if li[mid]<=x:
            left=mid
        else:
            right=mid
     li[mid]<=x li[mid] li mid x left=mid left mid right=mid right mid return left left x x li li def get(L):
    ret=[-10**13]
    for _ in range(L):
        ret.append(int(input()))
    ret.append(10**13)
    return ret get ret=[-10**13] ret [-10**13] -10**13 -10 13 for _ in range(L):
        ret.append(int(input()))
     _ range(L) range L ret.append(int(input())) ret.append ret append int(input()) int input() input ret.append(10**13) ret.append ret append 10**13 10 13 return ret ret L L A,B,Q=map(int,input().split()) A map(int,input().split()) map int input().split() ().split () input split B Q S=get(A) S get(A) get A T=get(B) T get(B) get B for _ in range(Q):
    x=int(input())

    # sn,sp,tn,tpを二分探索で出す
    sn,tn=bs(x,S),bs(x,T)

    # これらの経路の組み合わせの中に最小値が含まれている
    # 全部で8パターンあるので全探索してminをansとして保持
    ans=10**13
    for s in [S[sn],S[sn+1]]:
        for t in [T[tn],T[tn+1]]:
            d=abs(s-x)+abs(t-s)
            e=abs(t-x)+abs(s-t)
            ans=min([ans,d,e])
    print(ans) _ range(Q) range Q x=int(input()) x int(input()) int input() input sn,tn=bs(x,S),bs(x,T) sn bs(x,S) bs x S tn bs(x,T) bs x T ans=10**13 ans 10**13 10 13 for s in [S[sn],S[sn+1]]:
        for t in [T[tn],T[tn+1]]:
            d=abs(s-x)+abs(t-s)
            e=abs(t-x)+abs(s-t)
            ans=min([ans,d,e])
     s [S[sn],S[sn+1]] S[sn] S sn S[sn+1] S sn+1 sn 1 for t in [T[tn],T[tn+1]]:
            d=abs(s-x)+abs(t-s)
            e=abs(t-x)+abs(s-t)
            ans=min([ans,d,e])
     t [T[tn],T[tn+1]] T[tn] T tn T[tn+1] T tn+1 tn 1 d=abs(s-x)+abs(t-s) d abs(s-x)+abs(t-s) abs(s-x) abs s-x s x abs(t-s) abs t-s t s e=abs(t-x)+abs(s-t) e abs(t-x)+abs(s-t) abs(t-x) abs t-x t x abs(s-t) abs s-t s t ans=min([ans,d,e]) ans min([ans,d,e]) min [ans,d,e] ans d e print(ans) print ans Q=map(int,input().split()) map(int,input().split()) Q T=get(B) get(B) T sn,tn=bs(x,S),bs(x,T) bs(x,S) sn ans=min([ans,d,e]) min([ans,d,e]) ans def bs(x,li):
    # 値xがliの2連続した値a,b達が作る[a,b)のどこに入るか
    # aを返す
    # liはソート済みとする
    left,right=0,len(li)
    while left+1<right:
        mid = (left+right)//2
        if li[mid]<=x:
            left=mid
        else:
            right=mid
    return left def bs(x,li):
    # 値xがliの2連続した値a,b達が作る[a,b)のどこに入るか
    # aを返す
    # liはソート済みとする
    left,right=0,len(li)
    while left+1<right:
        mid = (left+right)//2
        if li[mid]<=x:
            left=mid
        else:
            right=mid
    return left bs S=get(A) get(A) S ans=10**13 10**13 ans d=abs(s-x)+abs(t-s) abs(s-x)+abs(t-s) d A,B,Q=map(int,input().split()) map(int,input().split()) A tn=bs(x,S),bs(x,T) bs(x,T) tn B,Q=map(int,input().split()) map(int,input().split()) B def get(L):
    ret=[-10**13]
    for _ in range(L):
        ret.append(int(input()))
    ret.append(10**13)
    return ret def get(L):
    ret=[-10**13]
    for _ in range(L):
        ret.append(int(input()))
    ret.append(10**13)
    return ret get e=abs(t-x)+abs(s-t) abs(t-x)+abs(s-t) e x=int(input()) int(input()) x
# 各クエリに対して,二分探索で解を求める

def bs(x,li):
    # 値xがliの2連続した値a,b達が作る[a,b)のどこに入るか
    # aを返す
    # liはソート済みとする
    left,right=0,len(li)
    while left+1<right:
        mid = (left+right)//2
        if li[mid]<=x:
            left=mid
        else:
            right=mid
    return left

def get(L):
    ret=[-10**13]
    for _ in range(L):
        ret.append(int(input()))
    ret.append(10**13)
    return ret

A,B,Q=map(int,input().split())
S=get(A)
T=get(B)
for _ in range(Q):
    x=int(input())

    # sn,sp,tn,tpを二分探索で出す
    sn,tn=bs(x,S),bs(x,T)

    # これらの経路の組み合わせの中に最小値が含まれている
    # 全部で8パターンあるので全探索してminをansとして保持
    ans=10**13
    for s in [S[sn],S[sn+1]]:
        for t in [T[tn],T[tn+1]]:
            d=abs(s-x)+abs(t-s)
            e=abs(t-x)+abs(s-t)
            ans=min([ans,d,e])
    print(ans)