#include <iostream>
#include <vector>
const int MAX = 1001;
class Staque {
private:
int staque[MAX * 20] = {}, top = 1, front = 1;
public:
bool empty()
{
if (top == front)
return true;
else
return false;
}
bool full()
{
if ((top + 1) % MAX == front)
return true;
else
return false;
}
void push(int a)
{
if (full()) return;
if (top == 0)
++top;
staque[(top++)%MAX] = a;
}
int pop()
{
if (empty())
return 0;
return staque[(--top)%MAX];
}
int deStq()
{
if (empty())
return 0;
return staque[(front++)%MAX];
}
};
class Graph
{
private:
std::vector<int> vertex[MAX];
public:
void linkVertex(int a, int b)
{
int left = 0, right = vertex[a].size() - 1;
while (right >= left) {
if (b > vertex[a].at((left + right) / 2))
left = (left + right) / 2 + 1;
else if (b < vertex[a].at((left + right) / 2))
right = (left + right) / 2 - 1;
else
return;
}
vertex[a].insert(vertex[a].begin() + left, b);
}
void insertEdge(int a, int b)
{
if (a == b)
return;
linkVertex(a, b);
linkVertex(b, a);
}
void DFS(int v)
{
Staque staque;
int visited[MAX] = {}, w;
visited[v] = 1;
printf("%d ", v);
staque.push(v);
while (!staque.empty()) {
v = staque.pop();
if (visited[v] == 0) {
visited[v] = 1;
printf("%d ", v);
}
for (w = vertex[v].size() - 1; w >= 0; w--) {
if (visited[vertex[v].at(w)] == 0) {
staque.push(vertex[v].at(w));
}
}
}
}
void BFS(int v)
{
Staque staque;
int visited[MAX] = {}, temp;
visited[v] = 1;
printf("%d ", v);
staque.push(v);
while (!staque.empty()) {
v = staque.deStq();
for (int w = 0; w < vertex[v].size(); w++) {
temp = vertex[v].at(w);
if (visited[temp] == 0) {
visited[temp] = 1;
printf("%d ", temp);
staque.push(temp);
}
}
}
}
};
int main(void)
{
Graph graph;
int n, m, v, v1, v2;
scanf("%d %d %d", &n, &m, &v);
for (int i = 0; i < m; i++) {
scanf("%d %d", &v1, &v2);
graph.insertEdge(v1, v2);
}
if (v <= n) {
graph.DFS(v);
printf("\n");
graph.BFS(v);
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKY29uc3QgaW50IE1BWCA9IDEwMDE7CgpjbGFzcyBTdGFxdWUgewpwcml2YXRlOgoJaW50IHN0YXF1ZVtNQVggKiAyMF0gPSB7fSwgdG9wID0gMSwgZnJvbnQgPSAxOwpwdWJsaWM6Cglib29sIGVtcHR5KCkKCXsKCQlpZiAodG9wID09IGZyb250KQoJCQlyZXR1cm4gdHJ1ZTsKCQllbHNlCgkJCXJldHVybiBmYWxzZTsKCX0KCWJvb2wgZnVsbCgpCgl7CgkJaWYgKCh0b3AgKyAxKSAlIE1BWCA9PSBmcm9udCkKCQkJcmV0dXJuIHRydWU7CgkJZWxzZQoJCQlyZXR1cm4gZmFsc2U7Cgl9Cgl2b2lkIHB1c2goaW50IGEpCgl7CgkJaWYgKGZ1bGwoKSkgcmV0dXJuOwoJCWlmICh0b3AgPT0gMCkKCQkJKyt0b3A7CgkJc3RhcXVlWyh0b3ArKyklTUFYXSA9IGE7Cgl9CglpbnQgcG9wKCkKCXsKCQlpZiAoZW1wdHkoKSkKCQkJcmV0dXJuIDA7CgkJcmV0dXJuIHN0YXF1ZVsoLS10b3ApJU1BWF07Cgl9CglpbnQgZGVTdHEoKQoJewoJCWlmIChlbXB0eSgpKQoJCQlyZXR1cm4gMDsKCQlyZXR1cm4gc3RhcXVlWyhmcm9udCsrKSVNQVhdOwoJfQp9OwoKY2xhc3MgR3JhcGgKewpwcml2YXRlOgoJc3RkOjp2ZWN0b3I8aW50PiB2ZXJ0ZXhbTUFYXTsKcHVibGljOgoJdm9pZCBsaW5rVmVydGV4KGludCBhLCBpbnQgYikgCgl7CgkJaW50IGxlZnQgPSAwLCByaWdodCA9IHZlcnRleFthXS5zaXplKCkgLSAxOwoJCXdoaWxlIChyaWdodCA+PSBsZWZ0KSB7CgkJCWlmIChiID4gdmVydGV4W2FdLmF0KChsZWZ0ICsgcmlnaHQpIC8gMikpCgkJCQlsZWZ0ID0gKGxlZnQgKyByaWdodCkgLyAyICsgMTsKCQkJZWxzZSBpZiAoYiA8IHZlcnRleFthXS5hdCgobGVmdCArIHJpZ2h0KSAvIDIpKQoJCQkJcmlnaHQgPSAobGVmdCArIHJpZ2h0KSAvIDIgLSAxOwoJCQllbHNlCgkJCQlyZXR1cm47CgkJfQoJCXZlcnRleFthXS5pbnNlcnQodmVydGV4W2FdLmJlZ2luKCkgKyBsZWZ0LCBiKTsKCX0KCXZvaWQgaW5zZXJ0RWRnZShpbnQgYSwgaW50IGIpCgl7CgkJaWYgKGEgPT0gYikKCQkJcmV0dXJuOwoJCWxpbmtWZXJ0ZXgoYSwgYik7CgkJbGlua1ZlcnRleChiLCBhKTsKCX0KCXZvaWQgREZTKGludCB2KQoJewoJCVN0YXF1ZSBzdGFxdWU7CgkJaW50IHZpc2l0ZWRbTUFYXSA9IHt9LCB3OwoJCXZpc2l0ZWRbdl0gPSAxOwoJCXByaW50ZigiJWQgIiwgdik7CgkJc3RhcXVlLnB1c2godik7CgkJd2hpbGUgKCFzdGFxdWUuZW1wdHkoKSkgewoJCQl2ID0gc3RhcXVlLnBvcCgpOwoJCQlpZiAodmlzaXRlZFt2XSA9PSAwKSB7CgkJCQl2aXNpdGVkW3ZdID0gMTsKCQkJCXByaW50ZigiJWQgIiwgdik7CgkJCX0KCQkJZm9yICh3ID0gdmVydGV4W3ZdLnNpemUoKSAtIDE7IHcgPj0gMDsgdy0tKSB7CgkJCQlpZiAodmlzaXRlZFt2ZXJ0ZXhbdl0uYXQodyldID09IDApIHsKCQkJCQlzdGFxdWUucHVzaCh2ZXJ0ZXhbdl0uYXQodykpOwoJCQkJfQoJCQl9CgkJfQoJfQoJdm9pZCBCRlMoaW50IHYpCgl7CgkJU3RhcXVlIHN0YXF1ZTsKCQlpbnQgdmlzaXRlZFtNQVhdID0ge30sIHRlbXA7CgkJdmlzaXRlZFt2XSA9IDE7CgkJcHJpbnRmKCIlZCAiLCB2KTsKCQlzdGFxdWUucHVzaCh2KTsKCQl3aGlsZSAoIXN0YXF1ZS5lbXB0eSgpKSB7CgkJCXYgPSBzdGFxdWUuZGVTdHEoKTsKCQkJZm9yIChpbnQgdyA9IDA7IHcgPCB2ZXJ0ZXhbdl0uc2l6ZSgpOyB3KyspIHsKCQkJCXRlbXAgPSB2ZXJ0ZXhbdl0uYXQodyk7CgkJCQlpZiAodmlzaXRlZFt0ZW1wXSA9PSAwKSB7CgkJCQkJdmlzaXRlZFt0ZW1wXSA9IDE7CgkJCQkJcHJpbnRmKCIlZCAiLCB0ZW1wKTsKCQkJCQlzdGFxdWUucHVzaCh0ZW1wKTsKCQkJCX0KCQkJfQoJCX0KCX0KfTsKCmludCBtYWluKHZvaWQpCnsKCUdyYXBoIGdyYXBoOwoJaW50IG4sIG0sIHYsIHYxLCB2MjsKCQoJc2NhbmYoIiVkICVkICVkIiwgJm4sICZtLCAmdik7Cglmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgewoJCXNjYW5mKCIlZCAlZCIsICZ2MSwgJnYyKTsKCQlncmFwaC5pbnNlcnRFZGdlKHYxLCB2Mik7Cgl9CglpZiAodiA8PSBuKSB7CgkJZ3JhcGguREZTKHYpOwoJCXByaW50ZigiXG4iKTsKCQlncmFwaC5CRlModik7Cgl9Cn0=