from collections import deque def bfs01(A, s): dist = [1 << 60] * (N + 2) dist[s] = 0 que = deque([s]) while que: v = que.popleft() for nv in g[v]: if nv >= N or v >= N: if dist[nv] > dist[v]: dist[nv] = dist[v] que.appendleft(nv) else: if dist[nv] > dist[v] + 1: dist[nv] = dist[v] + 1 que.append(nv) return dist N, KA, KB = map(int, input().split()) A = [int(x) - 1 for x in input().split()] B = [int(x) - 1 for x in input().split()] g = [[] for _ in range(N + 2)] for i in range(N - 1): g[i].append(i + 1) g[i + 1].append(i) for a in A: g[N].append(a) g[a].append(N) for b in B: g[N + 1].append(b) g[b].append(N + 1) distA = bfs01(A, N) distB = bfs01(B, N + 1) INF = 1 << 60 la = [-INF] * N ra = [INF] * N lb = [-INF] * N rb = [INF] * N i = 0 for a in A: while i <= a: ra[i] = a i += 1 i = N - 1 for a in A[::-1]: while i >= a: la[i] = a i -= 1 i = 0 for b in B: while i <= b: rb[i] = b i += 1 i = N - 1 for b in B[::-1]: while i >= b: lb[i] = b i -= 1 Q = int(input()) for _ in range(Q): s, t = map(int, input().split()) s, t = s - 1, t - 1 res1 = t - s res2 = min(s - la[s], ra[s] - s) + distA[t] res3 = min(s - lb[s], rb[s] - s) + distB[t] print(min(res1, res2, res3))