from collections import deque
n, m, v = map(int, input().split())
graph = [[] for _ in range(n+1)]
for _ in range(m):
st, en = map(int, input().split())
graph[st].append(en)
graph[en].append(st)
graph[st].sort()
graph[en].sort()
def dfs(graph, v, visited):
visited[v] = True
print(v, end=' ')
for i in graph[v]:
if not visited[i]:
dfs(graph, i, visited)
def bfs(graph, v, visited):
visited[v] = True
queue = deque()
queue.append(v)
while queue:
start = queue.popleft()
print(start, end = ' ')
for i in graph[start]:
if not visited[i]:
queue.append(i)
visited[i] = True
visited = [False] * (n+1)
dfs(graph, v, visited)
print()
visited = [False] * (n+1)
bfs(graph, v, visited)