#include<bits/stdc++.h>
using namespace std;
struct Edge{
int v, w;
};
const int maxn=100099;
const int inf = 0x7fffffff;
vector<Edge> graph[maxn];
int d[maxn];
bool bellman_ford(int n, int s){
bool flag;
for(int i=1;i<=n;i++){
d[i]=inf;
}
d[s] = 0;
for(int i=1; i<=n; i++){
flag = false;
for(int j=1; j<=n;j++){
for(int k=0; k<graph[j].size();k++){
Edge e = graph[j][k];
int u = j;
int v = e.v;
int w = e.w;
if(d[v] > d[u]+w){
d[v]=d[u]+w;
flag=1;
}
}
}
if(!flag) break;
}
return flag;
}
int main(){
int t;
int n, m;
int u,v, w;
cin>>t;
while(t--){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>u>>v>>w;
Edge e;
e.v = v;
e.w = w;
graph[u].push_back(e);
}
if(bellman_ford(n,1)){
cout<<"YES"<<endl;
} else{
cout<<"NO"<<endl;
}
}
return 0;
}