import sys
input=sys.stdin.readline
from collections import deque
n,m,v=map(int, input().split())
arr=[[]*(n+1) for _ in range(n+1)]
visited_bfs=[False]*(n+1)
visited_dfs=[False]*(n+1)
def dfs(v):
visited_dfs[v]=True
print(v, end=" ")
for i in sorted(arr[v]):
if visited_dfs[i]==False:
dfs(i)
def bfs(v):
visited_bfs[v]=True
queue=deque([v])
while queue:
k=queue.popleft()
print(k, end=" ")
for i in sorted(arr[k]):
if visited_bfs[i]==False:
visited_bfs[i]=True
queue.append(i)
for i in range(m):
a, b=map(int, input().split())
arr[a].append(b)
arr[b].append(a)
dfs(v)
print()
bfs(v)
import sys
input = sys.stdin.readline
n, m, v = map(int, input().split())
graph = [[] for _ in range(n+1)]
visited = [False] * (n+1)
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
for i in range(n+1):
graph[i].sort()
def dfs(v):
visited[v] = True
print(v, end=' ')
for i in graph[v]:
if not visited[i]:
dfs(i)
def bfs(v):
queue = [v]
visited[v] = False
while queue:
v = queue.pop(0)
print(v, end=' ')
for i in graph[v]:
if visited[i]:
queue.append(i)
visited[i] = False
dfs(v)
print()
bfs(v)
DFS : 스택구조 이용
BFS : 큐 구조 이용