#pragma region #include using namespace std; #define ALL(x) (x).begin(), (x).end() #define POW2(n) (1LL << (n)) #define FOR(i, begin, end) for (int i = (begin); i < (end); i++) #define IFOR(i, begin, end) for (int i = (end)-1; i >= (begin); i--) #define REP(i, n) FOR(i, 0, n) #define IREP(i, n) IFOR(i, 0, n) #define MOD 1000000007 #define debug(x) cerr << #x << " = " << (x) << " (line: " << __LINE__ << ") " << endl; typedef long long ll; template istream &operator>>(istream &is, vector &vec) { for (auto &v : vec) is >> v; return is; } template ostream &operator<<(ostream &os, const vector &vec) { os << "vec[ "; REP(i, vec.size()) i == 0 ? os << vec[i] : os << ", " << vec[i]; os << " ]"; return os; } template ostream &operator<<(ostream &os, const deque &deq) { os << "deq[ "; REP(i, deq.size()) i == 0 ? os << deq[i] : os << ", " << deq[i]; os << " ]"; return os; } template ostream &operator<<(ostream &os, const set &set) { os << "{ "; for (auto &&s : set) &s == &(*set.begin()) ? os << s : os << ", " << s; os << " }"; return os; } template ostream &operator<<(ostream &os, const unordered_set &set) { os << "{ "; for (auto &&s : set) &s == &(*set.begin()) ? os << s : os << ", " << s; os << " }"; return os; } template ostream &operator<<(ostream &os, const multiset &set) { os << "{ "; for (auto &&s : set) &s == &(*set.begin()) ? os << s : os << ", " << s; os << " }"; return os; } template ostream &operator<<(ostream &os, const unordered_multiset &set) { os << "{ "; for (auto &&s : set) &s == &(*set.begin()) ? os << s : os << ", " << s; os << " }"; return os; } template ostream &operator<<(ostream &os, const pair &p) { os << "(" << p.first << ", " << p.second << ")"; return os; } template ostream &operator<<(ostream &os, const map &m) { os << "{ "; for (auto &&k : m) &k == &(*m.begin()) ? os << k.first << " => " << k.second : os << ", " << k.first << " => " << k.second; os << " }"; return os; } template ostream &operator<<(ostream &os, const unordered_map &m) { os << "{ "; for (auto &&k : m) &k == &(*m.begin()) ? os << k.first << " => " << k.second : os << ", " << k.first << " => " << k.second; os << " }"; return os; } #pragma endregion bool isCollided(vector> &map, int h, int w, int x, int y) { REP(i, w) REP(j, h) if (map[y + j][x + i]) return true; return false; } int main() { cin.tie(0); ios::sync_with_stdio(false); cout << fixed << setprecision(10); int N; cin >> N; unordered_set A, C; vector B(N), result; string a, b; REP(i, N) { cin >> a >> B[i]; A.insert(a); } for (string &b : B) { if (A.find(b) == A.end() && C.find(b) == C.end()) { result.push_back(b); C.insert(b); } } for (string &r : result) cout << r << "\n"; }