#include<bits/stdc++.h>
using namespace std;
const int N = 1001000;
const int M = 2 * 10000010;
typedef long long ll;
int n, m, d[N], zb[N], cnt[N];
int a, b, p;
struct edge {
int v, d;
};
struct node {
int v, dep;
};
vector<edge>e[N];
inline int spfa(int s) {
queue<int>q;
d[s] = 0;
q.push({ s});
zb[s] = 1;
while (!q.empty()) {
int u = q.front();
q.pop();
zb[u] = 0;
for (auto nv : e[u]) {
int v = nv.v, w = nv.d;
if (d[v]>d[u] + w) {
d[v] = d[u] + w;
if (!zb[v]) {
q.push({ v });
zb[v] = 1;
cnt[v]++;
if (cnt[v] >=n+1)return 0;
}
}
}
}
return 1;
}
int main() {
int T;
cin >> T;
while (T--) {
memset(d, 0x3f, sizeof(d));
memset(cnt, 0, sizeof(cnt));
memset(zb, 0, sizeof(zb));
int a, b, w, shu;
cin >> n >> m;
for (int i = 0; i <= n + 1; i++) e[i].clear();
for (int i = 0; i <= n; i++) {
e[n+1].push_back({ i,0 });
}
for (int i = 1; i <= m; i++) {
cin >> a >> b >> w;
e[b].push_back({a-1,-w});
e[a-1].push_back({ b,w });
}
if (spfa(n+1)) {
cout << "true\n";
}
else cout << "false\n";
}
}