#include<stdio.h>
#include<queue>
#define MAX 1010
using namespace std;
int N, M, V;
int s, e;
int G[MAX][MAX];
int check_bfs[MAX];
queue<int> Q;
void bfs(int k)
{
Q.push(k);
check_bfs[k] = 1;
while(!Q.empty())
{
int cur = Q.front();
printf("%d ", cur);
Q.pop();
for(int i=1; i<=N; i++)
{
if(G[cur][i] == 1 and !check_bfs[i])
{
Q.push(i);
check_bfs[i] = 1;
}
}
}
return;
}
int main()
{
scanf("%d %d %d", &N, &M, &V);
for(int i=0; i<M; i++)
{
scanf("%d %d", &s, &e);
G[s][e] = G[e][s] = 1;
}
bfs(V); // 시작 노드
}