#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
const int N=1e6+10;
int n,m;
struct node{
int v,w,next;
node(){
w=next=0;
}
node(int a,int b,int c){
v=a,next=b,w=c;
}
}adj[N];
int dis[N],h[N],idx=1;
bool f[N];
void insert(int x,int y,int z){
adj[idx]=node(y,h[x],z);
h[x]=idx;
idx++;
}
queue<int> q;
int cnt[N];
void spfa(){
memset(dis,0x3f,sizeof dis);
memset(cnt,0,sizeof cnt);
dis[1]=0;
q.push(1);
f[1]=1;
while(!q.empty()){
int ver=q.front();
q.pop();
f[ver]=0;
for(int i=h[ver];i!=0;i=adj[i].next){
int v=adj[i].v,w=adj[i].w;
if(dis[v]>dis[ver]+w){
dis[v]=dis[ver]+w;
cnt[v]=cnt[ver]+1;
if(cnt[v]>=n){
cout<<"YES\n";
return;
}
if(!f[v]){
q.push(v);
f[v]=1;
}
}
}
}
cout<<"NO\n";
}
void solve(){
memset(adj,0,sizeof adj);
idx=1;
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
insert(x,y,z);
if(z>=0) insert(y,x,z);
}
spfa();
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t=1;
cin>>t;
while(t--){
solve();
}
return 0;
}