#include <iostream>
#include <queue>
#include <cstring>
#include <ctime>
#define int long long
using namespace std;
struct d
{
int aa,bb;
}w;
queue<d>q;
vector<int>vv[100005],vv2[100005];
int n,m,s,u,v,mu[100005],em[100005],h,t,r,cnt,pp;
signed main()
{
cin >> t;
while(t --)
{
int clo = clock();
cin >> n >> m;
s = 1,r = 0,cnt = 0,pp = 0;
while(!q.empty())q.pop();
q.push({s,0});
for(int i = 1;i <= m;i ++)
{
scanf("%lld%lld%lld",&u,&v,&h);
vv[u].push_back(v);vv2[u].push_back(h);
if(h >= 0)vv[v].push_back(u);vv2[v].push_back(h),pp ++;
}
memset(em,0x3f,sizeof(em));
memset(mu,0,sizeof(mu));
em[s] = 0,mu[s] = 1;
while(!q.empty())
{
w = q.front();
q.pop();
if(clock() - clo > 2000)
{
cout << "YES\n";
r = 1;
break ;
}
mu[w.aa] = 0;
for(int i = 0;i < vv[w.aa].size();i ++)
if(em[vv[w.aa][i]] > em[w.aa] + vv2[w.aa][i] && !mu[vv[w.aa][i]])
{
mu[vv[w.aa][i]] = 1;
em[vv[w.aa][i]] = em[w.aa] + vv2[w.aa][i];
q.push({vv[w.aa][i],em[vv[w.aa][i]]});
}
}
if(!r)cout << "NO\n";
}
}