#include<bits/stdc++.h>
using namespace std;
int t,n,m,w;
int u,v,p,tot;
int head[250001];
long long d[250001],in[250001];
struct node {
int next,to,quan;
} edge[520001];
void add(int u,int v,int w) {
tot++;
edge[tot].next=head[u];
edge[tot].quan=w;
edge[tot].to=v;
head[u]=tot;
}
const int inf=1<<30;
bool v1[250001];
bool spfa(int s) {
memset(in,0,sizeof(in));
memset(v1,0,sizeof(v1));
memset(d,inf,sizeof(d));
queue<int>q;
d[s]=0;
v1[s]=0;
q.push(s);
in[s]++;
while(!q.empty()) {
int x=q.front();
q.pop();
v1[x]=0;
for(int i=head[x]; i!=0; i=edge[i].next) {
int iz=edge[i].quan,io=edge[i].to;
if(d[io]>d[x]+iz) {
d[io]=d[x]+iz;
if(!v1[io]) {
q.push(io);
v1[io]=1;
if(++in[io]>=n) {
return false;
}
}
}
}
}
return true;
}
int main() {
cin>>t;
while(t--) {
bool flag=0;
memset(edge,0,sizeof(edge));
memset(head,0,sizeof(head));
tot=0;
cin>>n>>m;
for(int i=1; i<=m; i++) {
cin>>u>>v>>p;
if(p>=0) {
add(u,v,p);
add(v,u,p);
} else {
add(u,v,p);
}
}
for(int i=1; i<=n; i++) {
if(!spfa(i)) {
cout<<"YES"<<endl;
flag=1;
break;
}
}
if(!flag) cout<<"NO"<<endl;
}
return 0;
}