#include<bits/stdc++.h>
#define N 2010
#define pb push_back
#define pii pair<long long,long long>
#define fi first
#define se second
using namespace std;
vector<pii> adj[N];
bool spfa(int n){
long long dis[N],vis[N],num[N];
memset(dis,0x3f3f3f,sizeof(dis));
memset(vis,0,sizeof(vis));
memset(num,0,sizeof(num));
queue<long long> q;
q.push(1);
dis[1]=0;
vis[1]=1;
while(!q.empty()){
int u=q.front();
q.pop();
vis[u]=0;
for(auto e:adj[u]){
long long v=e.fi,w=e.se;
if(dis[v]>dis[u]+w){
num[v]=num[u]+1;
dis[v]=dis[u]+w;
if(num[v]>=n){
return 1;
}
if(!vis[v]){
q.push(v);
vis[v]=1;
}
}
}
}
return 0;
}
void solve(){
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
adj[u].pb({v,w});
if(w>=0){
adj[v].pb({u,w});
}
}
if(spfa(n)){
cout<<"YES";
}else{
cout<<"NO";
}
cout<<endl;
}
int main(){
int T;
cin>>T;
while(T--){
solve();
}
return 0;
}