#include<bits/stdc++.h>
#define MAXN 6007
#define int long long
using namespace std;
int n,m,t;
int head[MAXN],nxt[MAXN],num=-1;
int var[MAXN],edge[MAXN];
int dis[MAXN],vis[MAXN],cnt[MAXN];
void add_edge(int u,int v,int w){
num++;
var[num]=v;
edge[num]=w;
nxt[num]=head[u];
head[u]=num;
}
int spfa(){
queue<int> q;
q.push(1);
vis[1]=1;
dis[1]=0;
while(!q.empty()){
int u=q.front();
q.pop();
vis[u]=0;
for(int i=head[u];~i;i=nxt[i]){
if(dis[var[i]]>dis[u]+edge[i]){
dis[var[i]]=dis[u]+edge[i];
cnt[var[i]]=cnt[u]+1;
if(!vis[var[i]]){
q.push(var[i]);
vis[var[i]]=1;
if(cnt[var[i]]>=n){
return 0;
}
}
}
}
}
return 1;
}
signed main(){
cin>>t;
for(int i=1;i<=t;i++){
memset(head,-1,sizeof(head));
memset(nxt,0,sizeof(nxt));
memset(dis,0x3f,sizeof(dis));
memset(vis,0,sizeof(vis));
memset(edge,0,sizeof(edge));
memset(var,0,sizeof(var));
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
if(z>=0){
add_edge(x,y,z);
add_edge(y,x,z);
}
else{
add_edge(x,y,z);
}
}
if(spfa()==1){
cout<<"NO"<<endl;
}
else{
cout<<"YES"<<endl;
}
}
return 0;
}