#include<bits/stdc++.h>
typedef long long ll;
#define pb push_back
#define fr first
#define sc second
#define endl '\n'
using namespace std;
#define mid ((left+right)>>1)
int n,m;
vector<pair<int,pair<int,int>>>komsu[1000023];
map<int,int>mp[1000023];
vector<int>ans;
pair<int,int> dfs(int pos,int las){
if(mp[pos][las]==1){
cout<<"YES"<<endl;
return {pos,las};
}
if(mp[pos].size()>3){
mp[pos].erase(las);
return {-1,-1};
}
if(mp[pos][las]==2){
return {-1,-1};
}
mp[pos][las]=1;
for(auto x:komsu[pos]){
if(x.sc.fr==las)continue;
pair<int,int>p=dfs(x.fr,x.sc.fr);
if(p.fr==-2)return p;
if(p.fr!=-1){
ans.pb(x.sc.sc);
if(p.fr==pos&&p.sc==las)return {-2,-2};
return p;
}
}
mp[pos][las]=2;
return {-1,-1};
}
void code(){
cin>>n>>m;
ans.clear();
for(int i=1;i<=n;i++){
mp[i].clear();
komsu[i].clear();
}
for(int i=1;i<=m;i++){
int x,y,z;cin>>x>>y>>z;
komsu[x].pb({y,{z,i}});
}
for(int i=1;i<=n;i++){
for(auto x:komsu[i]){
pair<int,int>p=dfs(x.fr,x.sc.fr);
if(p.fr!=-1){
reverse(ans.begin(),ans.end());
cout<<ans.size()<<" ";
for(int y:ans){
cout<<y<<" ";
}
return;
}
}
}
cout<<"NO";
}
signed main(){
ios_base::sync_with_stdio(23^23);cin.tie(0);
int t;cin>>t;
while(t--){
code();
cout<<endl;
}
}