#include<stdio.h>
#include<vector>
#include<algorithm>
#define MAX 1010
using namespace std;
int N, M, V;
int s, e;
vector<int> G[MAX];
int check_dfs[MAX];
void dfs(int k)
{
check_dfs[k] = 1;
printf("%d ", k);
for(int i=0; i<G[k].size(); i++) // k번 정점과 연결된 모든 정점들에 대하여
{
if(!check_dfs[G[k][i]]) dfs(G[k][i]);
}
return;
}
int main()
{
scanf("%d %d %d", &N, &M, &V);
for(int i=0; i<M; i++) // graph by adjacency list
{
scanf("%d %d", &s, &e);
G[s].push_back(e);
G[e].push_back(s);
}
for(int i=1; i<=N; i++) // sort
{
sort(G[i].begin(), G[i].end());
}
dfs(V);
}