import collections,sys,math,functools,operator,itertools,bisect,heapq,decimal,string,time,random #sys.setrecursionlimit(10**9) #sys.set_int_max_str_digits(0) input = sys.stdin.readline #n = int(input()) # #alist = [] #s = input() n,ka,kb = map(int,input().split()) #for i in range(n): # alist.append(list(map(int,input().split()))) a = [-1<<60] + list(map(int,input().split())) + [1<<60] b = [-1<<60] + list(map(int,input().split())) + [1<<60] a_b_cost = 1<<60 for i in a: if abs(i) > 1<<59:continue idx = bisect.bisect_left(b,i) for j in range(idx-1,idx+2): if 0 > j or j >= len(b):continue a_b_cost = min(a_b_cost,abs(i - b[j])) #print(i,b[j]) q = int(input()) for i in range(q): s,t = map(int,input().split()) ans = 1<<60 ans = min(ans,abs(s-t)) a_s_id = bisect.bisect_left(a,s) a_s_cost = 1<<60 for j in range(a_s_id-1,a_s_id+2): if 0> j or j >= len(a):continue a_s_cost = min(a_s_cost,abs(s-a[j])) a_t_id = bisect.bisect_left(a,t) a_t_cost = 1<<60 for j in range(a_t_id-1,a_t_id+2): if 0> j or j >= len(a):continue a_t_cost = min(a_t_cost,abs(t-a[j])) b_s_id = bisect.bisect_left(b,s) b_s_cost = 1<<60 for j in range(b_s_id-1,b_s_id+2): if 0> j or j >= len(b):continue b_s_cost = min(b_s_cost,abs(s-b[j])) b_t_id = bisect.bisect_left(b,t) b_t_cost = 1<<60 for j in range(b_t_id-1,b_t_id+2): if 0 >j or j >= len(b):continue b_t_cost = min(b_t_cost,abs(t-b[j])) #print(a_s_cost,a_t_cost,a_b_cost) ans = min(ans,a_s_cost + a_t_cost) ans = min(ans,b_s_cost + b_t_cost) ans = min(ans,a_s_cost + a_b_cost + b_t_cost) ans = min(ans,b_s_cost + a_b_cost + a_t_cost) print(ans)