#include <bits/stdc++.h>
using namespace std;
int n, kol = 0, mas[100001];
vector<vector<int> > a, b;
vector<vector<int> > line;
void dfs(int s, int br) {
  printf("%d%c", mas[s], ' ');
  if (br == -1) {
    for (int i = 0; i < (int)a[line[s][0] % 1111111].size(); ++i)
      if (a[line[s][0] % 1111111][i] == line[s][0]) {
        dfs(b[line[s][0] % 1111111][i], s);
        break;
      }
  } else if (br > -1 && line[s].size() > 1) {
    if (mas[br] != line[s][0]) {
      for (int i = 0; i < (int)a[line[s][0] % 1111111].size(); ++i)
        if (a[line[s][0] % 1111111][i] == line[s][0]) {
          dfs(b[line[s][0] % 1111111][i], s);
          break;
        }
    } else {
      for (int i = 0; i < (int)a[line[s][1] % 1111111].size(); ++i)
        if (a[line[s][1] % 1111111][i] == line[s][1]) {
          dfs(b[line[s][1] % 1111111][i], s);
          break;
        }
    }
  }
}
int main() {
  cin >> n;
  if (n == 1) {
    int x, y;
    scanf("%d%d", &x, &y);
    printf("%d%c%d", x, ' ', y);
    return 0;
  }
  memset(mas, 0, sizeof mas);
  a.resize(1111111);
  b.resize(1111111);
  line.resize(n + 1);
  for (int i = 0; i < n; ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    int key = x % 1111111;
    int m = (int)a[key].size(), YES = 0;
    for (int j = 0; j < m; ++j)
      if (a[key][j] == x) {
        ++YES;
        line[b[key][j]].push_back(y);
      }
    if (!YES) {
      a[key].push_back(x);
      b[key].push_back(kol);
      line[b[key][(int)b[key].size() - 1]].push_back(y);
      mas[kol] = x;
      ++kol;
    }
    key = y % 1111111;
    m = (int)a[key].size();
    YES = 0;
    for (int j = 0; j < m; ++j)
      if (a[key][j] == y) {
        ++YES;
        line[b[key][j]].push_back(x);
      }
    if (!YES) {
      a[key].push_back(y);
      b[key].push_back(kol);
      line[b[key][(int)b[key].size() - 1]].push_back(x);
      mas[kol] = y;
      ++kol;
    }
  }
  int x;
  for (int i = 0; i < kol; ++i)
    if ((int)line[i].size() == 1) {
      x = i;
      break;
    }
  dfs(x, -1);
  return 0;
}
