#include<bits/stdc++.h>
#include<conio.h>
#include<windows.h>
using namespace std;
void gt(int x,int y){
system("cls");
COORD c;
c.X=x;
c.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
cout<<"o";
}
char a;
int main(){
int x=0,y=0;
gt(x,y);
while(a=getch()){
if(a==72&&y>0){
--y;
gt(x,y);
}else if(a==80){
++y;
gt(x,y);
}else if(a==75&&x>0){
--x;
gt(x,y);
}else if(a==77){
++x;
gt(x,y);
}
}
}
/*
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGU8Y29uaW8uaD4KI2luY2x1ZGU8d2luZG93cy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJpbmcgc1s1XVsxMl09ewoJeyJ3IiwidyIsInciLCJ3IiwidyIsInciLCJ3IiwidyIsInciLCJ3In0sCgl7InciLCIgIiwiICIsIiAiLCIgIiwiICIsIiAiLCIgIiwiICIsIncifSwKCXsidyIsIiAiLCIgIiwiICIsIiAiLCIgIiwiICIsIiAiLCIgIiwidyJ9LAoJeyJ3IiwiICIsIiAiLCIgIiwiICIsIiAiLCIgIiwiICIsImYiLCJ3In0sCgl7InciLCJ3IiwidyIsInciLCJ3IiwidyIsInciLCJ3IiwidyIsIncifQp9Owp2b2lkIGd0KGludCB4LGludCB5KXsKCXN5c3RlbSgiY2xzIik7Cglmb3IoaW50IGk9MDtpPDU7aSsrKXsKCQlmb3IoaW50IGo9MDtqPDExO2orKyl7CgkJCWNvdXQ8PHNbaV1bal07CgkJfQoJCWNvdXQ8PGVuZGw7Cgl9CglDT09SRCBjOwoJYy5YPXg7CgljLlk9eTsKCVNldENvbnNvbGVDdXJzb3JQb3NpdGlvbihHZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpLGMpOwoJY291dDw8InkiOwp9CmNoYXIgYTsKaW50IG1haW4oKXsKCWludCB4PTEseT0xOwoJZ3QoeCx5KTsKCXdoaWxlKGE9Z2V0Y2goKSl7CgkJaWYoYT09NzImJnk+MCYmc1t5LTFdW3hdIT0idyIpewoJCQktLXk7CgkJCWd0KHgseSk7CgkJfWVsc2UgaWYoYT09ODAmJnNbeSsxXVt4XSE9InciKXsKCQkJKyt5OwoJCQlndCh4LHkpOwoJCX1lbHNlIGlmKGE9PTc1JiZ4PjAmJnNbeV1beC0xXSE9InciKXsKCQkJLS14OwoJCQlndCh4LHkpOwoJCX1lbHNlIGlmKGE9PTc3JiZzW3ldW3grMV0hPSJ3Iil7CgkJCSsreDsKCQkJZ3QoeCx5KTsKCQl9CgkJaWYoc1t5XVt4XT09ImYiKXsKCQkJc3lzdGVtKCJjbHMiKTsKCQkJY291dDw8IjYiOwoJCQlicmVhazsKCQl9Cgl9Cn0=
*/
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5;
vector<pair<pair<int,int>,int>> g;
int n,m,d[N];
void b(){
cin>>n>>m;
fill(d,d+3*n,INT_MAX);
d[1]=0;
g.clear();
int c=0;
for(int i=0;i<m;i++){
int u,v,w;
cin>>u>>v>>w;
if(w>=0){
g.push_back({{u,v},w});
g.push_back({{v,u},w});
//cout<<u<<' '<<v<<' '<<w<<endl;
//cout<<v<<' '<<u<<' '<<w<<endl;
c++;
}else{
g.push_back({{u,v},w});
//cout<<u<<' '<<v<<' '<<w<<endl;
}
}
m+=c;
bool b;
for(int x=1;x<=n;x++){
//cout<<x<<endl;
b=0;
for(int i=0;i<m;i++){
int u=g[i].first.first,v=g[i].first.second,w=g[i].second;
//cout<<d[u]<<' '<<v<<' '<<w<<' ';
if(d[u]==INT_MAX) continue;
if(d[v]>d[u]+w){
d[v]=d[u]+w;
b=1;
}
//cout<<u<<' '<<v<<' '<<w<<' '<<d[u]<<' '<<d[v]<<endl;
}
//cout<<endl;
if(!b) break;
}
//for(int i=1;i<=n;i++){
// cout<<d[i]<<' ';
//}
if(b){
cout<<"YES\n";
return;
}
cout<<"NO\n";
}
signed main(){
int t;
cin>>t;
while(t--){
b();
}
return 0;
}