#include<bits/stdc++.h>
using namespace std;
struct edge{
int u,v,w;
};
long long n,m,T,dis[2000001],flag;
vector<edge> e(6001);
bool bellmanford(){
dis[1]=0;
for(int i=1;i<=n+1;i++){
flag=0;
for(int j=1;j<=m+m;j++){
if(dis[e[j].v]>dis[e[j].u]+e[j].w){
dis[e[j].v]=dis[e[j].u]+e[j].w;
flag=1;
}
}
}
if(flag==1) return 1;
else return 0;
}
int main(){
cin>>T;
string ans[T+5];
for(int i=1;i<=T;i++){
cin>>n>>m;
memset(dis,0x3f,sizeof(dis));
for(int j=1;j<=m;j++){
int u,v,w;
cin>>u>>v>>w;
if(w>=0){
e[j].u=u;
e[j].v=v;
e[j].w=w;
e[j+m].u=v;
e[j+m].v=u;
e[j+m].w=w;
}
else{
e[j].u=u;
e[j].v=v;
e[j].w=w;
}
}
if(bellmanford()==1) ans[i]="YES";
else ans[i]="NO";
}
for(int i=1;i<=T;i++) cout<<ans[i]<<endl;
return 0;
}