#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
long long n, m, first, second, v, a[100005], b[100005], q, xdddddddddddddddddd,
    ydddddddddddddddddd, x2, y2, ans;
int32_t main() {
  ios_base ::sync_with_stdio(0);
  cin.tie();
  cout.tie();
  cin >> n >> m >> first >> second >> v;
  for (long long i = 1; i <= first; i++) {
    cin >> a[i];
  }
  for (long long i = 1; i <= second; i++) {
    cin >> b[i];
  }
  cin >> q;
  a[first + 1] = 1000000005;
  b[second + 1] = 1000000005;
  a[0] = -1000000005;
  b[0] = -1000000005;
  for (long long i = 1; i <= q; i++) {
    cin >> xdddddddddddddddddd >> ydddddddddddddddddd >> x2 >> y2;
    if (xdddddddddddddddddd != x2) {
      auto p = lower_bound(a + 1, a + first + 1, ydddddddddddddddddd);
      auto q = p;
      q--;
      ans = 1000000005;
      ans = min(ans, (abs(ydddddddddddddddddd - *p) + abs(y2 - *p) +
                      abs(xdddddddddddddddddd - x2)));
      ans = min(ans, (abs(ydddddddddddddddddd - *q) + abs(y2 - *q) +
                      abs(xdddddddddddddddddd - x2)));
      p = lower_bound(b + 1, b + second + 1, ydddddddddddddddddd);
      q = p;
      q--;
      ans = min(ans, (abs(ydddddddddddddddddd - *p) + abs(y2 - *p) +
                      (abs(xdddddddddddddddddd - x2) + v - 1) / v));
      ans = min(ans, (abs(ydddddddddddddddddd - *q) + abs(y2 - *q) +
                      (abs(xdddddddddddddddddd - x2) + v - 1) / v));
      cout << ans << '\n';
    } else {
      cout << abs(ydddddddddddddddddd - y2) << '\n';
    }
  }
}
