#include <bits/stdc++.h>
using namespace std;
map<int, int> mmp;
map<int, int> revmp;
struct node {
  int adj[2];
  bool ch;
};
node g[100002];
int main() {
  int n;
  int fre = 0;
  int a, b, s, d;
  mmp.clear();
  cin >> n;
  memset(g, 0, sizeof(g));
  fre = 1;
  for (int i = 0; i < n; i++) {
    cin >> a >> b;
    if (mmp.find(a) != mmp.end())
      s = mmp.find(a)->second;
    else {
      mmp.insert(pair<int, int>(a, fre));
      revmp.insert(pair<int, int>(fre, a));
      s = fre++;
    }
    if (mmp.find(b) != mmp.end())
      d = mmp.find(b)->second;
    else {
      mmp.insert(pair<int, int>(b, fre));
      revmp.insert(pair<int, int>(fre, b));
      d = fre++;
    }
    if (g[s].adj[0])
      g[s].adj[1] = d;
    else
      g[s].adj[0] = d;
    if (g[d].adj[0])
      g[d].adj[1] = s;
    else
      g[d].adj[0] = s;
  }
  int st;
  for (int i = 1; i < fre; i++)
    if (g[i].adj[1] == 0) {
      st = i;
      break;
    }
  int atm = st;
  int par = 0;
  while (1) {
    printf("%d ", revmp[atm]);
    if (g[atm].adj[0] != par) {
      par = atm;
      atm = g[atm].adj[0];
    } else {
      par = atm;
      atm = g[atm].adj[1];
    }
    if (g[atm].adj[1] == 0) break;
  }
  printf("%d\n", revmp[atm]);
}
