#include #include using namespace std; using i32 = int; using i64 = long long; using i128 = __int128_t; using f64 = double; using p2 = pair; using el = tuple; using mint = atcoder::modint; void _main(); int main() { cin.tie(0); ios::sync_with_stdio(false); cout << fixed << setprecision(18); _main(); } void _main() { i64 tt; cin >> tt; for (;tt--;) { i64 n, m, k, p; cin >> n >> m >> k >> p; vector a(n), b(m); vector> v1(k), v2(k); vector s(k); for (i64 i = 0; i < n; i++) { cin >> get<0>(a[i]); } for (i64 i = 0; i < n; i++) { get<2>(a[i]) = i; cin >> get<1>(a[i]); get<1>(a[i])--; v1[get<1>(a[i])].push_back(a[i]); } for (i64 i = 0; i < m; i++) { cin >> get<0>(b[i]); } for (i64 i = 0; i < m; i++) { get<2>(b[i]) = i; cin >> get<1>(b[i]); get<1>(b[i])--; v2[get<1>(b[i])].push_back(b[i]); } for (i64 i = 0; i < k; i++) { cin >> s[i]; } for (i64 i = 0; i < k; i++) { sort(v1[i].begin(), v1[i].end()); sort(v2[i].begin(), v2[i].end()); } sort(a.begin(), a.end()); sort(b.begin(), b.end()); i64 l = -1, r = 1e18; while (r - l > 1) { i64 mid = (l + r) / 2; i64 cnt = 0; for (i64 i = 0; i < n; i++) { auto [x, c, id] = a[i]; { i64 j = lower_bound(b.begin(), b.end(), (el){mid - x + 1, 0, 0}) - b.begin(); j -= lower_bound(v2[c].begin(), v2[c].end(), (el){mid - x + 1, 0, 0}) - v2[c].begin(); cnt += j; } { i64 j = lower_bound(v2[c].begin(), v2[c].end(), (el){mid - x + s[c] + 1, 0, 0}) - v2[c].begin(); cnt += j; } } if (cnt >= p) r = mid; else l = mid; } i64 ans1 = -1, ans2 = -1; for (i64 i = 0; i < n; i++) { auto [x, c, id] = a[i]; { i64 j = lower_bound(b.begin(), b.end(), (el){r - x, 0, 0}) - b.begin(); i64 k = lower_bound(b.begin(), b.end(), (el){r - x + 1, 0, 0}) - b.begin(); if (j != k) { auto [y1, d1, jd1] = b[j]; auto [y2, d2, jd2] = b[k - 1]; if (c != d1) { ans1 = id, ans2 = jd1; } else if (c != d2) { ans1 = id, ans2 = jd2; } } } { i64 j = lower_bound(v2[c].begin(), v2[c].end(), (el){r - x + s[c], 0, 0}) - v2[c].begin(); if (j < v2[c].size() && get<0>(v2[c][j]) == r - x + s[c]) { ans1 = id, ans2 = get<2>(v2[c][j]); } } } cout << ans1 + 1 << " " << ans2 + 1 << "\n"; } }