#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;
}