

from collections import defaultdict, deque
def dfs(graph, node, n, nodes, visited=set()):
visited.add(node)
nodes.append(node)
child = graph[node]
child.sort()
for c in child:
if c not in visited:
dfs(graph, c, n, nodes, visited)
return
def bfs(graph, start, n):
visited = []
visited.append(start)
q = deque()
q.append(start)
while q:
node = q.popleft()
child = graph[node]
for c in child:
if c not in visited:
q.append(c)
visited.append(c)
return visited
line = list(map(int, input().split()))
n, m, v = line[0], line[1], line[2]
graph = defaultdict(list)
for i in range(m):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
nodes = []
dfs(graph, v, n, nodes)
print(*nodes)
path = bfs(graph, v, n)
print(*path)