//saving for later
#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=1000005;
int s[N],cs[N];
pair<int,int> l[N];
vector<array<int,7>> g[N];
vector<int> atb;
set<int> ap[N];
int f=0,beg;
void dfs(int v, pair<int,int> pc){
s[v]=1;
cs[v]=1;
for(auto au : g[v]){
int u=au[0],c1=au[1],c2=au[2],c3=au[3];
if(s[u]){
if(!cs[u]) continue;
pair<int,int> lc=l[u];
if(lc.fi==c1 && lc.se==-1 && c2==-1) ap[u].insert(c1);
else{
f=1;
atb.clear();
atb.pb(u);
atb.pb(v);
beg=u;
break;
}
}
else{
pair<int,int> curc;
if((pc.fi==-1 && pc.se==-1) || pc.se!=-1){
if(c3!=-1) curc={-1,-1};
else curc={c1,c2};
}else{
int prec=pc.fi;
if(c1==prec) c1=-1;
if(c2==prec) c2=-1;
if(c3==prec) c3=-1;
if(c3>c2) swap(c2,c3);
if(c2>c1) swap(c1,c2);
if(c3>c2) swap(c2,c3);
if(c3!=-1) curc={-1,-1};
else curc={c1,c2};
}
l[v]=curc;
dfs(u,curc);
if(f){
if(beg!=-1) atb.pb(v);
if(beg==v) beg=-1;
break;
}
}
}
cs[v]=0;
return;
}
void solve(){
int n,m;
cin>>n>>m;
for(int i=1; i<=n; i++){
s[i]=0;
g[i].clear();
ap[i].clear();
}
f=0;
vector<array<int,4>> temp(m);
for(int i=0; i<m; i++){
int x,y,c;
cin>>x>>y>>c;
temp[i]={x,y,c,i+1};
}
sort(temp.begin(),temp.end());
vector<array<int,4>> temp2;
temp2.pb(temp[0]);
for(int i=1; i<m; i++){
if(temp[i]!=temp[i-1]) temp2.pb(temp[i]);
}
for(int i=0; i<temp2.size(); i++){
if(i==m-1){
g[temp2[i][0]].pb({temp2[i][1],temp2[i][2],-1,-1,temp2[i][3],-1,-1});
continue;
}
int l=i,r=l+1;
while(temp2[l][0]==temp2[r][0] && temp2[l][1]==temp2[r][1]){
r++;
if(r==m) break;
}
r--;
array<int,7> road={temp2[l][1],temp2[l][2],-1,-1,temp2[l][3],-1,-1};
if(r>l){
road[2]=temp2[l+1][2];
road[5]=temp2[l+1][3];
}
if(r>l+1){
road[3]=temp2[l+2][2];
road[6]=temp2[l+2][3];
}
g[temp2[l][0]].pb(road);
i=r;
}
for(int i=1; i<=n; i++){
if(!s[i]) dfs(i,{-1,-1});
if(f){
cout<<"YES\n"<<atb.size()-1<<' ';\
vector<array<int,7>> v;
for(int j=atb.size()-1; j>0; j--){
int v=atb[i],u=atb[i-1];
for(auto au : g[v]){
if(au[0]==u) v.pb(au);
}
}
for(int j=atb.size()-1; j>=0; j--) cout<<atb[j]<<' ';
cout<<'\n';
break;
}
}
for(int i=1; i<=n; i++){
if(ap[i].size()>1){
cout<<'a'<<i<<'\n';
}
}
if(!f) cout<<"NO\n";
return;
}
int main(){
FIO
int tc; cin>>tc;
while(tc--){
solve();
}
return 0;
}