#include<iostream>
#include<cstdio>
#include<cstring>
#define re register int
#define il inline
using namespace std;
const int N=505;
bool co[N*N],vis[N*2],bz[N+N][2],mapp[N+N][N+N],vs[N+N][2];
int T,n,x,y,m,c,pd[N+N][N+N],pre[N+N],ans[N],top,stk[(N+N)*114];
il bool Hungary(int now){
for(int i=1+n;i<=n+n;i++){
if(pd[now][i]){
if(!vis[i]){
vis[i]=1;
if(!pre[i]){
pre[i]=now;
return 1;
}
else{
if(Hungary(pre[i])){
pre[i]=now;
return 1;
}
}
}
}
}
return 0;
}
il bool Search(int now,bool v){
if(vs[now][v])return 0;
bz[now][v]=1;
vs[now][v]=1;
bool f=v;
if(now<=n){
for(int i=n+1;i<=n+n;i++){
if(mapp[now][i]||!pd[now][i])continue;
bool tov=v^co[pd[now][i]];
if(bz[i][!tov]){
int To=i;
while(stk[top]!=i){
mapp[stk[top]][To]^=1;
mapp[To][stk[top]]^=1;
To=stk[top];
top--;
}
mapp[i][To]^=1;
mapp[To][i]^=1;
top--;
return 1;
}
top++;
stk[top]=i;
if(Search(i,tov)){
return 1;
}
top--;
}
bz[now][f]=0;
return 0;
}
else{
for(int i=1;i<=n;i++){
if(mapp[now][i]||!pd[now][i])continue;
bool tov=v^co[pd[now][i]];
if(bz[i][!tov]){
int To=i;
while(stk[top]!=i){
mapp[stk[top]][To]^=1;
mapp[To][stk[top]]^=1;
To=stk[top];
top--;
}
cout<<endl;
mapp[i][To]^=1;
mapp[To][i]^=1;
top--;
return 1;
}
top++;
stk[top]=i;
if(Search(i,tov)){
return 1;
}
top--;
}
bz[now][f]=0;
return 0;
}
}
int main(){
scanf("%d",&T);
while(T--){
memset(pd,0,sizeof(pd));
memset(co,0,sizeof(co));
memset(pre,0,sizeof(pre));
memset(mapp,0,sizeof(mapp));
memset(vs,0,sizeof(vs));
scanf("%d%d",&n,&m);
for(re i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&c);
pd[x][y]=i;
pd[y][x]=i;
mapp[y][x]=1;
co[i]=c;
}
bool g=0;
for(re i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
if(!Hungary(i)){
g=1;
break;
}
}
if(g){
printf("-1\n");
continue;
}
for(re i=1;i<=n;i++){
ans[i]=pd[pre[i+n]][i+n];
g=g^co[ans[i]];
mapp[pre[i+n]][i+n]=1;
mapp[i+n][pre[i+n]]=0;
}
if(!g){
for(re i=1;i<=n;i++)printf("%d ",ans[i]);
printf("\n");
continue;
}
g=0;
memset(bz,0,sizeof(bz));
top=0;
for(re i=1;i<=n;i++){
if(Search(i,0)){
g=1;
break;
}
}
if(!g){
printf("-1\n");
continue;
}
for(re i=1;i<=n;i++){
for(re j=1;j<=n;j++){
if(mapp[i][j+n])printf("%d ",pd[i][j+n]);
}
}
printf("\n");
}
return 0;
}