#include <iostream>
#include <unordered_map>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode() : val(0), next(nullptr) {};
ListNode(int v) : val(v), next(nullptr) {}
};
void print(ListNode* dummy) {
ListNode* p = dummy;
while (p->next) {
p = p->next;
cout << p->val << " ";
}
cout << endl;
}
int main() {
int num; // 链表结点个数
int head_val; // 头结点值
cin >> num >> head_val;
int i_val;
int pre_val;
auto dummuy = new ListNode(-1);
auto head = new ListNode(head_val);
dummuy->next = head;
unordered_map<int, ListNode*> m;
m[-1] = dummuy;
m[head_val] = head;
for (int i = 0; i < num - 1; ++i) {
cin >> i_val >> pre_val;
auto p = m[pre_val];
auto newNode = new ListNode(i_val);
if (p) newNode->next = p->next;
p->next = newNode;
m[i_val] = newNode;
}
int del_val;
cin >> del_val;
auto p = m[del_val];
if (p == head) {
dummuy->next = p->next;
} else if (p->next == nullptr) {
p = nullptr;
} else {
p->val = p->next->val;
p->next = p->next->next;
}
print(dummuy);
return 0;
}