2 10 1 1 1
1
10
1
1 5 1 8
 4 4 1 0 1
1

1
1 2 1 4
 2 5 1 0 1
2

1
1 4 1 5
 10 10 1 8 4
10
2 3 4 5 6 7 8 9
10
1 1 3 1
2 1 7 1
1 1 9 1
7 1 4 1
10 1 7 1
2 1 7 1
3 1 2 1
5 1 2 1
10 1 5 1
6 1 9 1
 2 4 1 1 1
1
4
1
1 2 1 3
 2 2 0 1 1

1
1
1 2 2 2
 1000 1000 1 1 10
1
2
1
1 900 1 1000
 5 5 1 1 1
3
2
1
1 5 1 1
 2 4 1 1 1
1
2
1
2 3 2 4
 4 4 1 0 1
4

5
1 1 2 2
1 3 2 2
3 3 4 3
3 2 2 2
1 2 2 3

3
 2
 1
 3
4
4
3
3
4
3
3
4
3
 1
 3
 100
 4
 1
 6
4
3
5
4

import sys

def minp():
	return sys.stdin.readline().strip()

def mint():
	return int(minp())

def mints():
	return map(int,minp().split())

n,m,cl,ce,v = mints()
l = list(mints())
e = list(mints())

def dist(x1, y1, x2, y2, t, yv):
	if t == 0:
		return abs(y1-yv)+abs(yv-y2)+abs(x1-x2)
	if t == 1:
		return abs(y1-yv)+abs(yv-y2)+(abs(x2-x1)+v-1)//v

q = mint()
bigg = 10**100
for i in range(q):
	x1,y1,x2,y2 = mints()
	best = bigg
	if len(l) != 0:
		L = 0
		R = len(l)-1
		while R-L > 1:
			C = (L+R)//2
			if l[C] <= y1:
				L = C
			else:
				R = C
		best = min(best, dist(x1,y1,x2,y2,0,l[L]))
		best = min(best, dist(x1,y1,x2,y2,0,l[R]))

		L = 0
		R = len(l)-1
		while R-L > 1:
			C = (L+R)//2
			if l[C] <= y2:
				L = C
			else:
				R = C
		best = min(best, dist(x1,y1,x2,y2,0,l[L]))
		best = min(best, dist(x1,y1,x2,y2,0,l[R]))

	if len(e) != 0:
		L = 0
		R = len(e)-1
		while R-L > 1:
			C = (L+R)//2
			if e[C] <= y1:
				L = C
			else:
				R = C
		best = min(best, dist(x1,y1,x2,y2,1,e[L]))
		best = min(best, dist(x1,y1,x2,y2,1,e[R]))

		L = 0
		R = len(e)-1
		while R-L > 1:
			C = (L+R)//2
			if e[C] <= y2:
				L = C
			else:
				R = C
		best = min(best, dist(x1,y1,x2,y2,1,e[L]))
		best = min(best, dist(x1,y1,x2,y2,1,e[R]))
	print(best)
