#include #define rep(i,n) for(int i=0;i P; const int INF = 1e9; const int MOD = 1000000007; int n = 20005; vector> graph(2*n,vector()); vector visited(2*n,-1); void dfs(int i){ if(graph[i].size() == 0) visited[i] = 1; else{ visited[i] = 0; for(int p:graph[i]){ if(visited[p] == -1) dfs(p); } } } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n; map mp; int id = 0; rep(i,n){ string a,b; cin >> a >> b; if(mp.find(a) == mp.end()){ mp[a] = id++; } if(mp.find(b) == mp.end()){ mp[b] = id++; } graph[mp[a]].push_back(mp[b]); } rep(i,id){ if(visited[i] != -1) continue; dfs(i); } vector idx; rep(i,id){ if(visited[i] == 1){ idx.push_back(i); } } vector ans; for(int i:idx){ for(auto p:mp){ if(i == p.second){ ans.push_back(p.first); break; } } } for(string s:ans) cout << s << '\n'; return 0; }