#include <iostream> #include <vector> #include <algorithm> using namespace std; struct SCC{ vector<int> used; vector<vector<int> > g2; void dfs1(vector<int>*g, int x, vector<int>&ns){ if (used[x]==1) return; used[x]=1; for (int nx:g[x]){ g2[nx].push_back(x); dfs1(g, nx, ns); } ns.push_back(x); } void dfs2(int x, vector<int>&co){ if (used[x]==2) return; used[x]=2; co.push_back(x); for (int nx:g2[x]){ dfs2(nx, co); } } SCC(vector<int>*g, int n, vector<vector<int> >&ret):used(n+1),g2(n+1){ vector<int> ns; for (int i=1;i<=n;i++){ dfs1(g, i, ns); } for (int i=n-1;i>=0;i--){ if (used[ns[i]]!=2){ ret.push_back(vector<int>()); dfs2(ns[i], ret.back()); } } } }; int t; int n, m, k; int vv[101010]; vector<int> v[101010]; int kk[101010]; vector<int> kv[101010]; int kd[101010]; int kr[101010]; int kh[101010]; void solve() { cin >> n >> m >> k; for (int i = 1; i <= n; i++) vv[i] = 0; for (int i = 1; i <= n; i++) kd[i] = 0; for (int i = 1; i <= n; i++) kr[i] = 0; for (int i = 1; i <= n; i++) kh[i] = 0; for (int i = 0; i < k; i++) { int x; cin >> x; vv[x] = 1; } for (int i = 1; i <= n; i++) v[i].clear(); for (int i = 1; i <= n; i++) kv[i].clear(); for (int i = 0; i < m; i++) { int a, b; cin >> a >> b; v[a].push_back(b); } vector<vector<int>> r; SCC s(v, n, r); vector<int> w; int uc = 0; for (int i = 0; i < r.size(); i++) { vector<int> u; int us = -1; for (int j = 0; j < r[i].size(); j++) { kk[r[i][j]] = i+1; if (vv[r[i][j]]) { u.push_back(r[i][j]); us = r[i][j]; } } if (us != -1) { kh[i+1] = 1; uc++; } sort(u.begin(), u.end()); for (int i = 0; i < u.size(); i++) { w.push_back(u[i]); } } for (int i = 1; i <= n; i++) { for (int j = 0; j < v[i].size(); j++) { int a = i; int b = v[i][j]; kv[kk[a]].push_back(kk[b]); } } for (int i = r.size()-1; i >= 0; i--) { int u = 0; for (int j = 0; j < kv[i+1].size(); j++) { u = max(u,kd[kv[i+1][j]]); } kd[i+1] = kh[i+1]+u; } if (kd[kk[w[0]]] < uc) { cout << "-1\n"; return; } for (int i = 0; i < w.size(); i++) { cout << w[i]; if (i != w.size()-1) cout << " "; } cout << "\n"; } int main() { cin >> t; for (int i = 0; i < t; i++) solve(); }