#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6;
const int leng = 2010;
struct node{
int from,to,w;
node(int a,int b,int c){
from = a;
to = b;
w = c;
}
};
vector <node> v[leng];
int n,m,s,t;
int spfa(){
int dis[leng];
bool inq[leng];
int neg[leng];
memset(neg,0,sizeof(neg));
neg[1] = 1;
for(int i = 1;i <= n;i++){
dis[i] = maxn;
inq[i] = false;
}
dis[1] = 0;
queue <int> q;
q.push(1);
inq[1] = true;
while(!q.empty()){
int u = q.front();
q.pop();
inq[u] = false;
for(int i = 0;i < v[u].size();i++){
int l = v[u][i].to;
int w = v[u][i].w;
if(dis[u] + w < dis[l]){
dis[l] = dis[u] + w;
if(!inq[l]){
inq[l] = true;
q.push(l);
neg[l]++;
if(neg[l] >= n){
return 1;
}
}
}
}
}
return 0;
}
int main(){
int __;
scanf("%d",&__);
for(int _ = 1;_ <= __;_++){
scanf("%d%d",&n,&m);
for(int i = 1;i <= m;i++){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
v[a].push_back(node(a,b,c));
if(c >= 0)
v[b].push_back(node(b,a,c));
}
if(!spfa()) printf("NO\n");
else printf("YES\n");
for(int i = 1;i <= n;i++) v[i].clear();
}
}