#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define all(v) v.begin(),v.end() using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; const ld epsylon = 1e-9; typedef unsigned int ui; int main() { freopen("lottery.in","r",stdin); freopen("lottery.out","w",stdout); int n; scanf("%d",&n); int u,v; vector > inp; for (int i = 0; i < n; ++i) { scanf("%d %d", &u,&v); inp.push_back(make_pair(u,v)); } vector res; vector s; int vis1[401]; memset(vis1,0,sizeof(vis1)); for (int i = 0; i < n; ++i) { bool ok = true; int node = inp[i].first; if (vis1[node]) continue; for (int j = 0; j < n; ++j) { if (i==j) continue; if (inp[j].second == node) { ok = false; break; } } if (ok) { vis1[node]=true; s.push_back(node); } } bool vis[1303]; memset(vis,0,sizeof(vis)); while (s.size() > 0) { int node = s[s.size()-1]; s.pop_back(); res.push_back(node); for (int i = 0; i < n; ++i) { if (vis[i]) continue; if (inp[i].first == node) { vis[i] = true; bool ok = true; for (int j = 0; j < n; ++j) { if (!vis[j] && inp[j].second == inp[i].second) { ok = false; break; } } if (ok) { s.push_back(inp[i].second); } } } } for (int i = 0; i < res.size(); ++i) { printf("%d%c",res[i], i