#include<bits/stdc++.h>
using namespace std;
int next[8101],h[8010],z[8010],w[8010],idx=0;
void add(int a,int b,int c){
next[++idx]=h[a];
h[a]=idx;
z[idx]=b;
w[idx]=c;
}
queue<int> p;
int main(){
int n,m,t,i,j[4010],d[4010];bool flag=1,vis[6000];
cin>>t;
for(i=1;i<=t;i++){
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
if(w>0){
add(u,v,w);add(v,u,w);
}else{
if(w<0)
add(u,v,w);
}
}
p.push(1);
flag=1;
memset(j,0,sizeof(j));memset(d,0x3f,sizeof(d));memset(h,0,sizeof(h));memset(vis,0,sizeof(vis));
d[1]=0;
while(!p.empty()){
int o=p.front();
p.pop();vis[o]=0;
for(int u=h[o];u;u=next[u]){
int b=z[u];
if(d[b]>d[o]+w[u]){
// j[b]=j[o]+1;
d[b]=d[o]+w[u];
if(!vis[b]){
j[b]++;
if(j[b]>n){
cout<<"YES"<<endl;
flag=0;
break;
}p.push(b);
}
}
}
if(!flag) break;
}
if(flag) cout<<"NO";
idx=0;
}
return 0;
}