#include <iostream>
#include <queue>
#include <cstdio>
int arr[1001][1001] = {0,};
int visit[1001]= {0,};
int n,m,v;
using namespace std;
void dfs(int v){
visit[v] = 1;
for(int i = 1; i <= n; i++){
if(visit[i] == 0 && arr[v][i] == 1){
printf("%d ",i);
dfs(i);
}
}
}
void bfs(int v){
queue<int> q;
q.push(v);
visit[v] = 1;
printf("%d ",v);
while(!q.empty()){
int he = q.front();
q.pop();
for(int i = 1; i <= n; i++){
if(visit[i] == 0 && arr[he][i] == 1){
q.push(i);
printf("%d ",i);
visit[i] = 1;
}
}
}
}
int main() {
scanf("%d %d %d ",&n,&m,&v);
for(int i = 0; i < m; i++){
int x, y;
scanf("%d %d ",&x, &y);
arr[x][y] = arr[y][x] = 1;
}
printf("%d ",v);
dfs(v);
puts("");
for(int i = 1; i <= n; i++) visit[i] = 0;
bfs(v);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxjc3RkaW8+CgppbnQgYXJyWzEwMDFdWzEwMDFdID0gezAsfTsKaW50IHZpc2l0WzEwMDFdPSB7MCx9OwppbnQgbixtLHY7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZvaWQgZGZzKGludCB2KXsKCXZpc2l0W3ZdID0gMTsKCWZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKCQlpZih2aXNpdFtpXSA9PSAwICYmIGFyclt2XVtpXSA9PSAxKXsKCQkJcHJpbnRmKCIlZCAiLGkpOwoJCQlkZnMoaSk7CgkJfQoJfQp9Cgp2b2lkIGJmcyhpbnQgdil7CglxdWV1ZTxpbnQ+IHE7CglxLnB1c2godik7Cgl2aXNpdFt2XSA9IDE7CglwcmludGYoIiVkICIsdik7Cgl3aGlsZSghcS5lbXB0eSgpKXsKCQlpbnQgaGUgPSBxLmZyb250KCk7CgkJcS5wb3AoKTsKCQlmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CgkJCWlmKHZpc2l0W2ldID09IDAgJiYgYXJyW2hlXVtpXSA9PSAxKXsKCQkJCXEucHVzaChpKTsKCQkJCXByaW50ZigiJWQgIixpKTsKCQkJCXZpc2l0W2ldID0gMTsKCQkJfQoJCX0KCX0KCQp9CmludCBtYWluKCkgewoJc2NhbmYoIiVkICVkICVkICIsJm4sJm0sJnYpOwoJZm9yKGludCBpID0gMDsgaSA8IG07IGkrKyl7CgkJaW50IHgsIHk7CgkJc2NhbmYoIiVkICVkICIsJngsICZ5KTsKCQlhcnJbeF1beV0gPSBhcnJbeV1beF0gPSAxOwoJfQoJcHJpbnRmKCIlZCAiLHYpOwoJZGZzKHYpOwoJcHV0cygiIik7Cglmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgdmlzaXRbaV0gPSAwOwoJYmZzKHYpOwoJcmV0dXJuIDA7Cn0=