#include<iostream>
#include<vector>
#include<string.h>
#include<algorithm>
using namespace std;
int read()
{
int x=0;char ch=' ';
while(!isdigit(ch))
ch=getchar();
while(isdigit(ch))
{
x=x*10+(ch-'0');
ch=getchar();
}
return x;
}
void write(int x)
{
if(x>9)write(x/10);
putchar(x%10+'0');
}
vector<int>edge[500005];
int deg[500005];
void add(int i,int j)
{
edge[i].push_back(j);
++deg[i];
}
void bianli(int num)
{
for(int i=1;i<=num;++i)
{
for(int j=0;j<edge[i].size();++j)
{write(edge[i][j]);putchar(' ');}
putchar('\n');
}
}
int tt[500005];
void merge(vector<int>&lis,int l,int r)
{
if(l>=r)return;
int mid=(l+r)>>1;
merge(lis,l,mid);
merge(lis,mid+1,r);
int i=l,k=l,j=mid+1;
while(i<=mid and j<=r)
{
if(lis[i]>lis[j])
tt[k++]=lis[j++];
else tt[k++]=lis[i++];
}
while(i<=mid)tt[k++]=lis[i++];
while(j<=r)tt[k++]=lis[j++];
for(int i=l;i<=r;++i)lis[i]=tt[i];
}
int main()
{
int t;cin>>t;while(t--)
{
memset(deg,0,sizeof(deg));
int n=read(),m=read();
for(int i=1;i<=n;++i)
vector<int>().swap(edge[i]);
while(m--)
{
int u=read(),v=read();
add(u,v);
}
for(int i=1;i<=n;++i)
merge(edge[i],0,edge[i].size()-1);
bianli(n);
}
}