#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
struct node
{
int u;
int w;
};
vector<node>edge[200005];
int d[200005];
bool bellford()
{
d[1]=0;
bool flag;
for(int i=1;i<=n;i++)
{
flag=false;
for(int j=1;j<=n;j++)
{
if(d[j]==1e9)continue;
for(int k=0;k<edge[j].size();k++)
{
node y=edge[j][k];
int u=y.u;
int w=y.w;
if(d[u]>d[j]+w)
{
d[u]=d[j]+w;
flag=true;
}
}
}
if(!flag)break;
}
return flag;
}
signed main()
{
int T;
cin>>T;
while(T--)
{
cin>>n>>m;
for(int i=1;i<=n;i++)
d[i]=1e9;
for(int i=1;i<=m;i++)
{
int x,y,z;
cin>>x>>y>>z;
node ed;
ed.u=y;
ed.w=z;
edge[x].push_back(ed);
ed.u=x;
if(z>=0)
edge[y].push_back(ed);
}
if(!bellford())
cout<<"NO\n";
else
cout<<"YES\n";
}
return 0;
}