//方式一
#include<iostream>
#include<cstdio>
#include<vector>
#define SIZE 1000
using namespace std;
vector<int> adj[1000];
int n,m;
void init()
{
scanf("%d%d",&n,&m);
int i,j;
int a,b;
for(i=1; i<=n; i++)
{
adj[i].clear();
}
for(i=1; i<=m; i++)
{
scanf("%d%d",&a,&b);
adj[a].push_back(b);
adj[b].push_back(a);
}
}
void print()
{
int i;
vector<int>::iterator j,iend;
for(i=1; i<=n; i++)
{
iend=adj[i].end();
printf("dian %d:",i);
for(j=adj[i].begin(); j!=iend; j++)
{
printf("%d ",*j);
}
printf("\n");
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
init();
print();
}
return 0;
}
//方式二
#include<iostream>
#include<cstdio>
#include<vector>
#define SIZE 1000
using namespace std;
vector<vector<int> >adj(SIZE);
int n,m;
void init()
{
scanf("%d%d",&n,&m);
int i,j;
int a,b;
for(i=1; i<=n; i++)
{
adj[i].clear(); //清除
}
for(i=1; i<=m; i++)
{
scanf("%d%d",&a,&b);
adj[a].push_back(b);
adj[b].push_back(a);
}
}
void print()
{
int i;
int j;
for(i=1; i<=n; i++)
{
printf("dian %d:",i);
for(j=0; j<adj[i].size(); j++)
{
printf("%d ",adj[i][j]);
}
printf("\n");
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
init();
print();
}
return 0;
}