#include <bits/stdc++.h>
using namespace std;
void fastio() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
}
template <typename T>
T POW(T B, T P) {
  if (P == 0) return 1;
  if (P & 1)
    return B * POW(B, P - 1);
  else
    return (POW(B, P / 2)) * (POW(B, P / 2));
}
int prime[1000000];
bool visprime[10000000];
void sieve() {
  int k = 0;
  for (int i = 2; i * i <= 1000000; i++) {
    for (int j = i * i; j <= 1000000; j += i) {
      visprime[j] = true;
    }
  }
  for (int i = 2; i <= 1000000; i++) {
    if (visprime[i] == false) prime[k++] = i;
  }
}
long long vis[100000 + 10];
vector<long long> g[100000 + 10];
vector<long long> ans;
void bfs(long long x) {
  queue<long long> q;
  q.push(x);
  vis[x] = 1;
  ans.push_back(x);
  while (q.size() != 0) {
    long long p = q.front();
    q.pop();
    for (long long i = 0; i < g[p].size(); i++) {
      long long u = g[p][i];
      if (vis[u] == 0) {
        vis[u] = 1;
        ans.push_back(u);
        q.push(u);
      }
    }
  }
}
int main() {
  long long n;
  cin >> n;
  long long x, y;
  map<int, int> m;
  map<int, int> mp, rp;
  int k = 1;
  int arr[n + 10];
  for (long long i = 0; i < n; i++) {
    cin >> x;
    long long l, t;
    if (mp[x] == 0) {
      mp[x] = k;
      rp[k] = x;
      arr[k] = x;
      l = k;
      k++;
    } else {
      l = mp[x];
    }
    cin >> y;
    if (mp[y] == 0) {
      mp[y] = k;
      rp[k] = y;
      arr[k] = y;
      t = k;
      k++;
    } else {
      t = mp[y];
    }
    g[l].push_back(t);
    g[t].push_back(l);
    m[l]++;
    m[t]++;
  }
  int s;
  for (auto it = m.begin(); it != m.end(); it++) {
    if (it->second == 1) {
      s = it->first;
      break;
    }
  }
  bfs(s);
  for (int i = n; i >= 0; i--) {
    cout << rp[ans[i]] << " ";
  }
}
