#include <bits/stdc++.h> using namespace std; void dfs1(int u, vector<bool>&used, vector<int>& top, const vector<vector<int>>& g) { used[u] = true; for (int v : g[u]) if (!used[v]) dfs1(v, used, top, g); top.push_back(u); } void dfs2(int u, int cmp, vector<bool>&used, vector<int>& cmps, const vector<vector<int>>& g) { used[u] = true; cmps[u] = cmp; for (int v : g[u]) if (!used[v]) dfs2(v, cmp, used, cmps, g); } void solve() { int n, m, k; cin >> n >> m >> k; vector<int> interesting(k); for (int i = 0; i < k; i++) { cin >> interesting[i]; --interesting[i]; } vector<vector<int>> g(n), gr(n); for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; --u, --v; g[u].push_back(v); gr[v].push_back(u); } vector<bool> used(n, false); vector<int> top1; for (int i = 0; i < n; i++) { if (!used[i]) dfs1(i, used, top1, g); } vector<int> cmps(n, 0); used.assign(n, false); reverse(top1.begin(), top1.end()); int cmp = 0; for (int u : top1) { if (!used[u]) { dfs2(u, cmp++, used, cmps, gr); } } vector<vector<int>> gc(cmp); vector<vector<int>> cs(cmp); for (int i = 0; i < n; i++) { cs[cmps[i]].push_back(i); for (int v : g[i]) { int a = cmps[i], b = cmps[v]; gc[a].push_back(b); } } vector<int> top2; used.assign(n, false); for (int i = 0; i < cmp; i++) { if (!used[i]) { dfs1(i, used, top2, gc); } } reverse(top2.begin(), top2.end()); vector<int> order(n); for (int i = 0; i < top2.size(); i++) { int u = top2[i]; for (int a : cs[u]) { order[a] = i; } } sort(interesting.begin(), interesting.end(), [&](int a, int b){ if (order[a] != order[b]) return order[a] < order[b]; return a < b; }); used.assign(n, false); bool fail = false; for (int it = 0; it < 13 && !fail; it++) { int id = rand() % k; used.assign(n, false); dfs1(interesting[id], used, top1, g); for (int i = id + 1; i < k; i++) if (!used[interesting[i]]) fail = true; } if (fail) { cout << -1 << endl; } else { for (int v : interesting) cout << (v + 1) << " "; cout << endl; } } int main() { ios_base::sync_with_stdio(false); int tests; cin >> tests; for (int t = 0; t < tests; t++) solve(); return 0; }