#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstdio>
#include<string.h>
#include<deque>
#include<stack>
#include<queue>
#include<vector>
#include<map>
using namespace std;
int w;
int n,m;
int dis[1005];
bool vi[1005];
int main(){
cin>>w;
while(w--){
cin>>n>>m;
vector<int>g[1005],w[1005];
int in[1005]={0};
for(int i=1;i<=n;i++){
dis[i]=-9999999;
in[i]=0;
vi[i]=0;
}
for(int x,y,z,i=1;i<=m;i++){
cin>>x>>y>>z;
g[x-1].push_back(y);
w[x-1].push_back(z);
g[y].push_back(x-1);
w[y].push_back(-z);
}
bool co=0;
queue<int> q;
for(int i=0;i<=n;i++){
if(!in[i]){
q.push(i);
memset(dis,-0x3f,sizeof(dis));
dis[i]=0;
vi[i]=1;
}
while(!q.empty()){
int x=q.front();
vi[x]=0;
q.pop();
for(int i=0;i<g[x].size();i++){
if(dis[g[x][i]]<dis[x]+w[x][i]){
dis[g[x][i]]=dis[x]+w[x][i];
if(!vi[g[x][i]]){
q.push(g[x][i]);
in[g[x][i]]++;
vi[g[x][i]]=1;
if(in[g[x][i]]>n){
co=1;cout<<"false"<<endl;
break;
}
}
}
}
if(co)break;
}
}
if(!co) cout<<"true"<<endl;
}
return 0;
}