/*Minimum time taken by each job to be completed given by a Directed Acyclic Graph*/
#include
using namespace std;
#define ll long long int
#define pb push_back
ll times[101];
ll vis[101];
void dfs(ll src,vector* adj,ll cp)
{
vis[src]=1;
times[src]=min(times[src],cp);
for(auto x:adj[src])
{
if(vis[x]==0)
{
dfs(x,adj,cp+1);
}
}
}
int main()
{
ll t;
cin>>t;
while(t--)
{
ll n,e;
cin>>n>>e;
vectoradj[n+1];
memset(vis,0,sizeof(vis));
for(ll i=0;i>u>>v;
adj[u].pb(v);
vis[v]++;
}
for(ll i=1;i<=n;i++) times[i]=INT_MAX;
queueq;
for(ll i=1;i<=n;i++)
{
if(!vis[i])
q.push(i);
}
memset(vis,0,sizeof(vis));
while(q.size())
{
ll t=q.front();
q.pop();
if(vis[t]==0)
{
dfs(t,adj,1);
}
}
for(ll i=1;i<=n;i++)
{
cout<