#include"bits/stdc++.h"
using namespace std;
long i,flag;
#define inf (1<<29)
long dis[1005];
struct node
{
long u,v;
long w;
};
vector<node>vec;
void bellman_ford(long n,long m)
{
for(i=0;i<n;i++)
dis[i]=inf;
dis[0]=0;//source a 0 rakhlam
long j;
for(i=0;i<n-1;i++)
{
for(j=0;j<m;j++)
{
if((dis[vec[j].u]+vec[j].w<dis[vec[j].v])&&(dis[vec[j].u]!=inf))
{
dis[vec[j].v]=dis[vec[j].u]+vec[j].w;
}
}
}
for(j=0;j<m;j++)
{
if(dis[vec[j].u]+vec[j].w<dis[vec[j].v])
{
flag=1;
}
}
}
int main()
{
//cout<<inf<<endl;
long ts;
cin>>ts;
while(ts--)
{
long n,m,a,b,c;
cin>>n>>m;
node edge;
for(i=0;i<m;i++)
{
cin>>a>>b>>c;
edge.u=a;
edge.v=b;
edge.w=c;
vec.push_back(edge);
}
flag=0;
bellman_ford(n,m);
if(flag==0)
{
printf("not possible\n");
}
else
printf("possible\n");
for(i=0;i<n+2;i++)
{
dis[i]=0;
}
vec.clear();
}
return 0;
}
using namespace std;
long i,flag;
#define inf (1<<29)
long dis[1005];
struct node
{
long u,v;
long w;
};
vector<node>vec;
void bellman_ford(long n,long m)
{
for(i=0;i<n;i++)
dis[i]=inf;
dis[0]=0;//source a 0 rakhlam
long j;
for(i=0;i<n-1;i++)
{
for(j=0;j<m;j++)
{
if((dis[vec[j].u]+vec[j].w<dis[vec[j].v])&&(dis[vec[j].u]!=inf))
{
dis[vec[j].v]=dis[vec[j].u]+vec[j].w;
}
}
}
for(j=0;j<m;j++)
{
if(dis[vec[j].u]+vec[j].w<dis[vec[j].v])
{
flag=1;
}
}
}
int main()
{
//cout<<inf<<endl;
long ts;
cin>>ts;
while(ts--)
{
long n,m,a,b,c;
cin>>n>>m;
node edge;
for(i=0;i<m;i++)
{
cin>>a>>b>>c;
edge.u=a;
edge.v=b;
edge.w=c;
vec.push_back(edge);
}
flag=0;
bellman_ford(n,m);
if(flag==0)
{
printf("not possible\n");
}
else
printf("possible\n");
for(i=0;i<n+2;i++)
{
dis[i]=0;
}
vec.clear();
}
return 0;
}