# 导入sys模块,用来读取一行输入
import sys
# ======================================
# 步骤1:读取整行输入,存成整数列表
# 输入格式:n h a1 b1 a2 b2 ... a(n-1) b(n-1) k
# ======================================
# 读入一整行,按空格拆分,全部转成整数,存到line列表里
line = list(map(int, sys.stdin.readline().split()))
# 从列表里取出第一个元素:节点总数n
n = line[0]
# 取出第二个元素:头节点的值h
h = line[1]
# ======================================
# 步骤2:创建字典,用来模拟单向链表
# link字典的含义:key是当前节点的值,value是它的下一个节点的值
# ======================================
link = {}
# 先把头节点放进字典,它的下一个节点暂时设为None(后面再补)
link[h] = None
# 我们需要从line列表的第3个元素开始读(索引从0开始,所以是index=2)
idx = 2
# 循环n-1次,因为有n-1个二元组(a,b)
for i in range(n - 1):
    # 取出当前位置的a:表示要插入的新节点
    a = line[idx]
    # 取出下一个位置的b:表示在b节点后面插入a
    b = line[idx + 1]
    # 索引往后跳2个位置,为下一组a,b做准备
    idx += 2
    # 核心逻辑:在b节点后面插入a节点
    # 1. 先把b原来的下一个节点,赋值给a的下一个节点
    link[a] = link[b]
    # 2. 再让b的下一个节点变成a
    link[b] = a
# 循环结束后,idx正好指向最后一个元素,也就是要删除的节点k
k = line[idx]
# ======================================
# 步骤3:删除值为k的节点
# ======================================
# 先找到k的前一个节点pre,cur从头节点h开始遍历
pre = None  # 初始前驱节点设为None
cur = h     # 当前节点从头节点开始
# 从头节点遍历链表,直到找到k节点
while cur is not None:
    if cur == k:
        break  # 找到k了,退出循环
    # 如果没找到,pre更新为当前节点,cur前进到下一个节点
    pre = cur
    cur = link[cur]
# 现在pre是k的前驱节点,cur就是k节点本身
# 开始删除操作
if pre is not None:
    # 情况1:k不是头节点
    # 把pre的下一个节点,直接改成k的下一个节点,跳过k
    link[pre] = link[cur]
else:
    # 情况2:k是头节点
    # 把新的头节点改成k的下一个节点
    h = link[h]
# 最后从字典里删掉k节点,释放空间
del link[k]
# ======================================
# 步骤4:从头节点开始遍历链表,输出结果
# ======================================
cur = h  # 从头节点开始
while cur is not None:
    # 打印当前节点的值,用空格隔开(不换行)
    print(cur, end=" ")
    # 前进到下一个节点
    cur = link[cur]