#include <bits/stdc++.h>
using namespace std;
#define MAXN 101
int T, n, m, u, v, w;
bool flag;
struct Edge{
int v, w;
};
vector<Edge> e[MAXN];
int dis[MAXN], cnt[MAXN];
bitset<MAXN> vis;
queue<int> que;
bool spfa(int s){
que.push(s);
dis[s] = 0;
vis[s] = true;
cnt[s] = 1;
while (!que.empty()){
u = que.front();
que.pop();
vis[u] = false;
for (auto i: e[u]){
v = i.v;
w = i.w;
if (dis[v] > dis[u] + w){
dis[v] = dis[u] + w;
if (!vis[v]){
cnt[v]++;
que.push(v);
vis[v] = true;
if (cnt[v] > n) return false;
}
}
}
}
return true;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> T;
while (T--){
cin >> n >> m;
for (int i=1; i<=n; i++) e[i].clear();
while (m--){
cin >> u >> v >> w;
e[u-1].push_back({v, w});
e[v].push_back({u-1, -w});
}
memset(dis, 0x3f, sizeof(dis));
memset(cnt, 0, sizeof(cnt));
vis.reset();
while (!que.empty()) que.pop();
flag = 0;
for (int i(0); i<=n; ++i){
if (!cnt[i] && !spfa(i)){
flag = 1;
break;
}
}
cout << (flag ? "false" : "true") << '\n';
}
return 0;
}