#include <bits/stdc++.h>
using namespace std;
const int N = 2e3 + 100;
int n,T,m,u,v,w;
int cnt[N],st[N],dist[N];
struct nodes{
int s,side;
};
vector<nodes> mp[N];
bool Spfa()
{
queue<int> q;
memset(dist,0x3f,sizeof dist);
memset(cnt,0,sizeof cnt);
memset(st,0,sizeof st);
dist[1] = 0;
q.push(1);
while(q.size())
{
int t = q.front();
q.pop();
st[t] = 0;
for(int i=0;i<mp[t].size();i++){
int a = mp[t][i].s;
int b = mp[t][i].side;
if(dist[a] > dist[t]+b){
dist[a] = dist[t] + b;
cnt[a] = cnt[t] + 1;
if(cnt[a] >= n)
return true;
if(!st[a]){
q.push(a);
st[a] = 1;
}
}
}
}
return false;
}
void solved()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=m;i++){
scanf("%d %d %d",&u,&v,&w);
nodes a;
a.s = v,a.side = w;
mp[u].push_back(a);
}
if(Spfa()) printf("YES\n");
else printf("NO\n");
for(int i=1;i<=n;i++)
mp[i].clear();
return;
}
int main()
{
scanf("%d",&T);
while(T--)
solved();
return 0;
}