#include<bits/stdc++.h> #define maxn 500100 #define int long long usingnamespace std; constdouble eps = 1e-8; vector<int>e[maxn], res, tmp, t1, t2; int dep[maxn], ind[maxn], c; bool vis[maxn];
voiddfs(int x, int fa, bool flag){ if(flag) vis[x] = true, tmp.push_back(x); for (auto u : e[x]) { if(u == fa) continue; dep[u] = dep[x] + 1; if(dep[u] > dep[c]) c = u; dfs(u, x, flag); } }
voidsolve(){ int n, m; cin >> n >> m; for (int i = 1; i <= m; ++i) { int u, v; cin >> u >> v; e[u].push_back(v); e[v].push_back(u); ind[u]++, ind[v]++; } bool flag = false; for (int i = 1; i <= n; ++i) if(ind[i] == n - 1) flag = true; for (int i = 1; i <= n && !flag; ++i) { if(vis[i]) continue; tmp.clear(); c = i; dfs(i, 0, false); dep[c] = 1; dfs(c, 0, true); if(dep[c] == 1) res.push_back(c); elseif(dep[c] == 3 || dep[c] == 2) { for (auto u : tmp) if(dep[u] & 1) t1.push_back(u); for (auto u : tmp) if(dep[u] % 2 == 0) t2.push_back(u); } else { for (auto u : tmp) if(dep[u] % 2 == 0) res.push_back(u); for (auto u : tmp) if(dep[u] & 1) res.push_back(u); } } if(flag) cout << -1; else { for (auto u : t1) cout << u << ' '; for (auto u : res) cout << u << ' '; for (auto u : t2) cout << u << ' '; } cout << '\n'; for (int i = 1; i <= n; ++i) e[i].clear(), vis[i] = false, dep[i] = 0, res.clear(), t1.clear(), t2.clear(), ind[i] = 0; }
signedmain(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t = 1; cin >> t; while (t--) { solve(); } return0; }