#include<bits/stdc++.h>
using namespace std;
const int maxn=2e3+5;
int t,in[maxn],w[maxn][maxn],dis[maxn],n,m;
vector<int> q1[maxn];
queue<int> q;
int rd(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+ch-'0';
ch=getchar();
}
return x*f;
}
void spfa(int v0){
int f=0;
q.push(v0);
while(!q.empty()){
int u=q.front();
q.pop();
if(++in[u]>n){cout<<"YES"<<endl;f=1;break;}
for(int i=0;i<q1[u].size();i++){
int v=q1[u][i];
if(dis[v]>dis[u]+w[u][v]){
dis[v]=dis[u]+w[u][v];
q.push(v);
}
}
}
if(!f) cout<<"NO"<<endl;
}
void inti(){
memset(dis,0x3f3f3f3f,sizeof(dis));
memset(in,0,sizeof(in));
dis[1]=0;
while(!q.empty()) q.pop();
for(int i=1;i<=n;i++) q1[i].clear();
}
int main(){
t=rd();
while(t--){
n=rd();m=rd();
inti();
for(int i=1;i<=m;i++){
int u,v;
u=rd();v=rd();
w[u][v]=rd();
if(w[u][v]>=0){
q1[u].push_back(v);
q1[v].push_back(u);
w[v][u]=w[u][v];
}
else q1[u].push_back(v);
}
spfa(1);
}
return 0;
}