//BFS
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
int t, n, m, start, i;
int a[110][110], book[110], q[110];
scanf("%d", &t);
while(t--)
{
scanf("%d %d %d", &n, &m, &start);
int x, y;
memset(a, 0, sizeof(a));
memset(book, 0, sizeof(book));
while(m--)
{
scanf("%d %d",&x, &y);
a[x][y] = a[y][x] = 1;
}
book[start] = 1;
int in = 0, out = 0;
q[in++] = start;
printf("%d", start);
while(out < in) //类似树的层序遍历
{
int k = q[out++];
for(i = 0; i < n; i++)
{
if(a[k][i] == 1 && book[i] == 0)
{
book[i] = 1;
printf(" %d", i);
q[in++] = i;
}
}
}
printf("\n");
}
return 0;
}
//DFS
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int n, m, f;
int a[110][110], book[110];
void dfs(int x) //类似树的先序遍历
{
book[x] = 1;
if(f == 1)
{
printf("%d", x);
f = 0;
}
else printf(" %d", x);
int i;
for(i = 0; i < n; i++)
{
if(a[x][i] ==1 && book[i] ==0)
dfs(i);
}
}
int main()
{
int t, x, y;
scanf("%d", &t);
while(t--)
{
scanf("%d %d", &n, &m);
memset(a, 0, sizeof(a));
while(m--)
{
scanf("%d %d", &x, &y);
a[x][y] = 1;
a[y][x] = 1;
}
memset(book, 0, sizeof(book));
f = 1;
dfs(0);
printf("\n");
}
return 0;
}