#include<iostream>
#include<string.h>
#include<queue>
#include<set>
#include<vector>
#define x first
#define y second
#define pb push_back
#define ms(a,b) memset(a,b,sizeof(a))
#define mp(a,b) std::make_pair(a,b)
using namespace std;
vector<pair<int,int> > g[2005];
vector<int> d(2005);
void solve()
{
int n, m;
cin >> n >> m;
for(int i=0;i<=n;i++) g[i].clear(),d[i]=100000000;
while (m--)
{
int a, b, c;
cin >> a >> b >> c;
if (c >= 0) g[a].push_back(mp(b, c)), g[b].push_back(mp(a, c));
else g[a].push_back(mp(b, c));
}
priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > pq;
set<int> s;
d[1] = 0;
int pd = 0;
pq.push(mp(0, 1));
vector<int> pa(n+1,0);
while (pq.size())
{
int dis = pq.top().x;
int v = pq.top().y;
//cout << v << ": " << dis << " " << d[v] << endl;
pq.pop();
if (s.count(v)) continue;
d[v] = dis;
s.insert(v);
for (pair<int, int> p : g[v])
if (d[p.x] > d[v] + p.y)
{
if(s.count(p.x))
{
int ver=v;
while(ver!=p.x&&ver) ver=pa[ver];
if(ver) pd=1;
// else
// {
// pa[p.x]=v;
// continue;
// }
// goto aaa;
}
pa[p.x]=v;
pq.push(mp(d[v] + p.y, p.x));
}
}
aaa:;
if (pd == 0) cout << "NO\n";
else cout << "YES\n";
}
signed main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
int t;
std::cin >> t;
//t = 1;
while (t--) solve();
}
WA#9:求助dalao 已经调不出来了QwQ