#include <iostream>
#include <queue>
#include <stdio.h>
int arr[1001][1001];
bool vi[1001];
bool vi2[1001];
int n, m, v;
void dfs(int v) {
printf("%d ", v);
vi[v] = true;
int i;
for (i = 1;i <= n;i++) {
if (!vi[i] && arr[v][i]) {
dfs(i);
}
}
}
void bfs(int v) {
std::queue<int> q;
q.push(v);
vi2[v] = true;
while (!q.empty()) {
int news = q.front();
vi2[news] = true;
printf("%d ", news);
q.pop();
int i;
for (i = 1;i <= n;i++) {
if (arr[news][i] && !vi2[i]) {
vi2[i] = true;
q.push(i);
}
}
}
}
int main()
{
scanf("%d %d %d", &n, &m, &v);
for (int i = 0;i < m;i++) {
int a, b;
scanf("%d %d", &a, &b);
arr[a][b] = 1;
arr[b][a] = 1;
}
dfs(v);
printf("\n");
bfs(v);
}