#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define SIZE 10001
struct road{
ll ver,cost;
};
ll n,m;
ll dis[SIZE];
ll times[SIZE];
bool vis[SIZE];
vector<road> r[SIZE];
bool spfa(ll root){
queue<ll> q;
q.push(root);
dis[root]=0;
vis[root]=1;
while(!q.empty()){
ll x=q.front();q.pop();
vis[x]=0;
for(ll i=0;i<r[x].size();i++){
ll y=r[x][i].ver;
ll z=r[x][i].cost;
if(dis[y]>dis[x]+z){
dis[y]=dis[x]+z;
if(!vis[y]){
times[y]++;
q.push(y);
vis[y]=1;
if(times[y]>=n)
return 0;
}
}
}
}
return 1;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
ll T;cin>>T;
for(ll t=1;t<=T;t++){
memset(times,0x3f,sizeof(times));
memset(vis,0,sizeof(vis));
memset(dis,0,sizeof(dis));
r->clear();
cin>>n>>m;
for(ll i=1;i<=m;i++){
ll x;road y;
cin>>x>>y.ver>>y.cost;
r[x].push_back(y);
if(y.cost>=0){
swap(x,y.ver);
r[x].push_back(y);
}
}
if(spfa(1)) cout<<"NO\n";
else cout<<"YES\n";
}
return 0;
}