#include <stdio.h>
#include <stdlib.h>
#include<string.h>
struct node
{
int data;
struct node *next;
};
struct node *head[101], *p, *q;
int book[101], n, m, start;
void sort(int n)
{
int i, t;
for(i = 0; i < n; i++)
{
for(p = head[i]->next; p; p = p->next)
{
for(q = p->next; q ; q = q->next)
{
if(p->data > q->data)
{
t = p->data; p->data = q->data; q->data = t;
}
}
}
}
}
void BFS(int start)
{
int que[110];
int a = 0, b = 0;
que[a++] = start;
book[start] = 1;
printf("%d", start);
while(a > b)
{
int k = que[b++];
for(p = head[k]->next; p; p=p->next)
{
if(!book[p->data])
{
book[p->data] = 1;
printf(" %d", p->data);
que[a++] = p->data;
}
}
}
}
int main()
{
int t, i;
scanf("%d", &t);
while(t--)
{
scanf("%d %d %d", &n, &m, &start);
for(i = 0; i < n; i++)
{
head[i] = (struct node*)malloc(sizeof(struct node));
head[i]->next = NULL;
}
memset(book, 0, sizeof(book));
while(m--)
{
int u, v;
scanf("%d%d", &u, &v);
p = (struct node*)malloc(sizeof(struct node));
p->data = v;
p->next = head[u]->next;
head[u]->next = p;
q = (struct node*)malloc(sizeof(struct node));
q->data = u;
q->next = head[v]->next;
head[v]->next = q;
}
sort(n);
/*
for(i = 0; i < n;i++) //检验sort函数
{
p = head[i]->next;
printf("%d ", i);
while(p)
{
if(p->next == NULL) printf("%d\n", p->data);
else printf("%d ", p->data);
p = p->next;
}
}
*/
BFS(start);
printf("\n");
}
return 0;
}