#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mxn=2e5+200;
int n,m,f[mxn],h[mxn];
vector<int>ans;
vector<pair<int,int>>e[mxn];
inline void init(int x)
{
ans.clear();
for (int i=1;i<=x;i++)
{
e[i].clear();
f[i]=i;
h[i]=1;
}
}
inline int find(int x)
{
return x==f[x] ? x : (f[x]=find(f[x]));
}
inline void tog(int i,int j)
{
int x=find(i);int y=find(j);
if (x==y) return void();
if(h[x]<=h[y]) f[x]=y;
else f[y]=x;
if (h[x]==h[y])h[y]++;
}
inline bool check(int i,int j)
{
return find(i)==find(j);
}
inline bool dfs(int x,int now,int f)
{
if(now==x) return 1;
for(auto to:e[now])
{
if(to.first==f) continue;
ans.push_back(to.second);
if(dfs(x,to.first,now)) return 1;
ans.pop_back();
}
return 0;
}
inline void solve()
{
cin>>n>>m;
init(n);
for (int i=1;i<=m;i++)
{
int u,v;
cin>>u>>v;
if (check(u,v))
{
e[u].push_back({v,i});
e[v].push_back({u,i});
dfs(v,u,u);
sort(ans.begin(),ans.end());
ans.push_back(i);
int las=0;
for (auto j:ans)
{
if (j!=las) cout<<j<<" ";
las=j;
}
cout<<"\n";
return;
}
tog(u,v);
e[u].push_back({v,i});
e[v].push_back({u,i});
}
cout<<-1<<'\n';
return void();
}
signed main()
{
cin.tie(0);cout.tie(0);
ios::sync_with_stdio(0);
int T;cin>>T;
while (T--) solve();
return 0;
}
如题