#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const long long INF = 2e9 + 10;
int n, m, cl, ce, v;
long long floo[100010], eleva[100010];
int main() {
  cin >> n >> m >> cl >> ce >> v;
  floo[1] = eleva[1] = -INF;
  ++cl;
  ++ce;
  for (int i = 2; i <= cl; ++i) scanf("%lld", &floo[i]);
  floo[++cl] = INF + 1;
  for (int i = 2; i <= ce; ++i) scanf("%lld", &eleva[i]);
  eleva[++ce] = INF + 1;
  int q;
  scanf("%d", &q);
  while (q--) {
    long long x1, x2, y1, y2;
    scanf("%lld%lld%lld%lld", &x1, &y1, &x2, &y2);
    swap(x1, y1);
    swap(x2, y2);
    long long ans = INF;
    int r = lower_bound(floo + 1, floo + 1 + cl, x1) - floo;
    int l = r - 1;
    ans = min(ans, min(abs(floo[r] - x1) + abs(floo[r] - x2),
                       abs(x1 - floo[l]) + abs(x2 - floo[l])) +
                       abs(y2 - y1));
    r = lower_bound(floo + 1, floo + 1 + cl, x2) - floo;
    l = r - 1;
    ans = min(ans, min(abs(floo[r] - x1) + abs(floo[r] - x2),
                       abs(x1 - floo[l]) + abs(x2 - floo[l])) +
                       abs(y2 - y1));
    r = lower_bound(eleva + 1, eleva + 1 + ce, x1) - eleva;
    l = r - 1;
    ans = min(ans, min(abs(x1 - eleva[r]) + abs(x2 - eleva[r]),
                       abs(x1 - eleva[l]) + abs(x2 - eleva[l])) +
                       (abs(y2 - y1) + v - 1) / v);
    r = lower_bound(eleva + 1, eleva + 1 + ce, x2) - eleva;
    l = r - 1;
    ans = min(ans, min(abs(x1 - eleva[r]) + abs(x2 - eleva[r]),
                       abs(x1 - eleva[l]) + abs(x2 - eleva[l])) +
                       (abs(y2 - y1) + v - 1) / v);
    if (y1 == y2) ans = min(ans, abs(x1 - x2));
    cout << ans << endl;
  }
}
