#include <bits/stdc++.h>
#define fi first
#define endl '\n'
#define se second
#define int long long
#define getName(x) #x
#define vi std::vector<int>
#define isz(v) (int) v.size()
#define pii std::pair<int, int>
#define all(v) v.begin(), v.end()
#define loop cerr << "here" << endl;
#define breakLoop if(TIME > 1) break;
#define TIME 1.0 * clock() / CLOCKS_PER_SEC
using namespace std;
typedef long long ll;
const int MAXN = 2e6 + 7;
template <typename T> void maximize(T &a, T b){if(a < b) a = b;}
template <typename T> void minimize(T &a, T b){if(a > b) a = b;}
vi save; set <int> s;
int nxt[MAXN], pre[MAXN], n, ans[MAXN], start;
bool check[MAXN];
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
#define task "t"
if (fopen(task".inp", "r")){
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
cin >> n;
for(int i = 1; i <= n; i++){
int x, y;
cin >> x >> y;
s.insert(x), s.insert(y);
nxt[x] = y;
pre[y] = x;
if(x == 0) start = y;
}
for(auto x : s) if(!pre[x]) save.push_back(x);
int curIdx = 2;
while(start){
check[start] = 1;
ans[curIdx] = start;
curIdx += 2;
start = nxt[start];
}
for(auto pos : save){
if(check[pos]) continue;
curIdx = 1;
int curVal = pos;
while(curVal){
ans[curIdx] = curVal;
curIdx += 2;
curVal = nxt[curVal];
}
}
for(int i = 1; i <= n; i++) cout << ans[i] << ' ';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZ2V0TmFtZSh4KSAjeAojZGVmaW5lIHZpIHN0ZDo6dmVjdG9yPGludD4KI2RlZmluZSBpc3oodikgKGludCkgdi5zaXplKCkKI2RlZmluZSBwaWkgc3RkOjpwYWlyPGludCwgaW50PgojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCksIHYuZW5kKCkKI2RlZmluZSBsb29wIGNlcnIgPDwgImhlcmUiIDw8IGVuZGw7CiNkZWZpbmUgYnJlYWtMb29wIGlmKFRJTUUgPiAxKSBicmVhazsKI2RlZmluZSBUSU1FIDEuMCAqIGNsb2NrKCkgLyBDTE9DS1NfUEVSX1NFQwp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKY29uc3QgaW50IE1BWE4gPSAyZTYgKyA3OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgbWF4aW1pemUoVCAmYSwgVCBiKXtpZihhIDwgYikgYSA9IGI7fQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBtaW5pbWl6ZShUICZhLCBUIGIpe2lmKGEgPiBiKSBhID0gYjt9CnZpIHNhdmU7IHNldCA8aW50PiBzOwppbnQgbnh0W01BWE5dLCBwcmVbTUFYTl0sIG4sIGFuc1tNQVhOXSwgc3RhcnQ7CmJvb2wgY2hlY2tbTUFYTl07CgpzaWduZWQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgICNkZWZpbmUgdGFzayAidCIKICAgIGlmIChmb3Blbih0YXNrIi5pbnAiLCAiciIpKXsKICAgICAgICBmcmVvcGVuKHRhc2siLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4odGFzayIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgY2luID4+IG47CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgY2luID4+IHggPj4geTsKICAgICAgICBzLmluc2VydCh4KSwgcy5pbnNlcnQoeSk7CiAgICAgICAgbnh0W3hdID0geTsKICAgICAgICBwcmVbeV0gPSB4OwogICAgICAgIGlmKHggPT0gMCkgc3RhcnQgPSB5OwogICAgfQogICAgZm9yKGF1dG8geCA6IHMpIGlmKCFwcmVbeF0pIHNhdmUucHVzaF9iYWNrKHgpOwogICAgaW50IGN1cklkeCA9IDI7CiAgICB3aGlsZShzdGFydCl7CiAgICAgICAgICAgIGNoZWNrW3N0YXJ0XSA9IDE7CiAgICAgICAgYW5zW2N1cklkeF0gPSBzdGFydDsKICAgICAgICBjdXJJZHggKz0gMjsKICAgICAgICBzdGFydCA9IG54dFtzdGFydF07CiAgICB9CiAgICBmb3IoYXV0byBwb3MgOiBzYXZlKXsKICAgICAgICBpZihjaGVja1twb3NdKSBjb250aW51ZTsKICAgICAgICBjdXJJZHggPSAxOwogICAgICAgIGludCBjdXJWYWwgPSBwb3M7CiAgICAgICAgd2hpbGUoY3VyVmFsKXsKICAgICAgICAgICAgYW5zW2N1cklkeF0gPSBjdXJWYWw7CiAgICAgICAgICAgIGN1cklkeCArPSAyOwogICAgICAgICAgICBjdXJWYWwgPSBueHRbY3VyVmFsXTsKICAgICAgICB9CiAgICB9CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY291dCA8PCBhbnNbaV0gPDwgJyAnOwp9Cg==