#include <bits/stdc++.h>
#define FIO ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define ll long long
#define pb push_back
#define fi first
#define se second
using namespace std;
const int N=50005;
vector<int> g[N];
vector<int> atb;
int s[N];
int f=0,beg;
void dfs(int v){
s[v]=1;
for(auto u : g[v]){
if(s[u]){
f=1;
beg=u;
atb.pb(v);
break;
}
dfs(u);
if(f){
if(beg!=-1) atb.pb(v);
if(beg==v) beg=-1;
break;
}
}
return;
}
void solve(){
int n,m;
cin>>n>>m;
for(int i=1; i<=m; i++){
s[i]=0;
g[i].clear();
}
vector<array<int,4>> edge(m);
for(int i=0; i<m; i++){
int x,y,c;
cin>>x>>y>>c;
edge[i]={x,y,c};
}
for(int i=0; i<m; i++){
for(int j=0; j<m; j++){
if(j==i) continue;
if(edge[i][1]==edge[j][0] && edge[i][2]!=edge[j][2]){
g[i+1].pb(j+1);
}
}
}
f=0;
atb.clear();
for(int i=1; i<=m; i++){
if(!s[i]) dfs(i);
if(f) break;
}
if(f){
cout<<"YES\n"<<atb.size()<<' ';
for(int i=atb.size()-1; i>=0; i--) cout<<atb[i]<<' ';
cout<<'\n';
}else cout<<"NO\n";
return;
}
int main(){
FIO
int tc; cin>>tc;
while(tc--){
solve();
}
return 0;
}