func_code_string: #include <bits/stdc++.h>   using namespace std;   using ll = long long;   const ll N = 1e6 + 10;   ll n, m, q, v;   ll kl, ke;   ll l[N];   ll e[N];   void umin(ll &a, ll b) { a = min(a, b); }   signed main() {     ios::sync_with_stdio(0), cin.tie(0);     cin >> n >> m;     cin >> kl >> ke;     cin >> v;     for (ll i = 0; i < kl; ++i) {       cin >> l[i];     }     for (ll i = 0; i < ke; ++i) {       cin >> e[i];     }     sort(l, l + kl);     sort(e, e + ke);     cin >> q;     while (q--) {       ll x1, y1, x2, y2;       cin >> x1 >> y1 >> x2 >> y2;       if (y1 > y2) {         swap(x1, x2);         swap(y1, y2);       }       ll ans = (ll)1e18;       auto it = lower_bound(l, l + kl, y1);       if (it != l + kl) {         umin(ans, abs(y1 - *it) + abs(y2 - *it) + abs(x1 - x2));       }       it = upper_bound(l, l + kl, y2);       if (it != l) {         --it;         umin(ans, abs(y1 - *it) + abs(y2 - *it) + abs(x1 - x2));       }       it = lower_bound(e, e + ke, y1);       if (it != e + ke) {         umin(ans, abs(y1 - *it) + abs(y2 - *it) + (abs(x1 - x2) + v - 1) / v);       }       it = upper_bound(e, e + ke, y2);       if (it != e) {         --it;         umin(ans, abs(y1 - *it) + abs(y2 - *it) + (abs(x1 - x2) + v - 1) / v);       }       if (x1 == x2) {         ans = abs(y1 - y2);       }       cout << ans <<   n ;     }     return 0;   }   