#include <bits/stdc++.h>
using namespace std;
int vis[2][2 * 1000000 + 10];
deque<int> q[2 * 1000000 + 10];
int main() {
  int n;
  while (~scanf("%d", &n)) {
    memset(vis, -1, sizeof(vis));
    int cnt = 0;
    for (int i = 1; i <= n; i++) {
      int u, v;
      scanf("%d%d", &u, &v);
      if (u != 0 && vis[1][u] != -1) {
        q[vis[1][u]].push_back(v);
        vis[1][v] = vis[1][u];
        vis[1][u] = -1;
      } else if (v != 0 && vis[0][v] != -1) {
        q[vis[0][v]].push_front(u);
        vis[0][u] = vis[0][v];
        vis[0][v] = -1;
      } else {
        while (!q[cnt].empty()) q[cnt].pop_back();
        q[cnt].push_back(u);
        q[cnt].push_back(v);
        vis[0][u] = cnt;
        vis[1][v] = cnt;
        cnt++;
      }
    }
    int star = -1, end = -1, p = -1;
    int cntt = cnt, len = cnt;
    int tmp = -1;
    while (1) {
      len--;
      if (len < 0) {
        if (star != end && q[star].back() == q[end].front()) {
          int tt = q[star].back();
          vis[1][tt] = -1;
          q[end].pop_front();
          while (!q[end].empty()) {
            q[star].push_back(q[end].front());
            q[end].pop_front();
          }
          vis[1][0] = star;
          vis[0][tt] = -1;
          end = star;
          continue;
        }
        int ok = 1;
        for (int i = 0; i < cntt; i++) {
          if (i == star || i == end) continue;
          if (!q[i].empty()) {
            ok = 0;
            cnt = i;
            break;
          }
        }
        if (ok) break;
      } else
        cnt = len;
      int u = q[cnt].front();
      int v = q[cnt].back();
      if (u == 0) {
        star = cnt;
        continue;
      } else if (v == 0) {
        end = cnt;
        continue;
      }
      if (vis[1][u] != -1) {
        int t = vis[1][u];
        if (t == cnt) continue;
        vis[1][u] = -1;
        q[cnt].pop_front();
        while (!q[cnt].empty()) {
          q[t].push_back(q[cnt].front());
          q[cnt].pop_front();
        }
        vis[1][q[t].back()] = t;
        vis[0][u] = -1;
      } else if (vis[0][v] != -1) {
        int t = vis[0][v];
        if (t == cnt) continue;
        vis[0][v] = -1;
        q[cnt].pop_back();
        while (!q[cnt].empty()) {
          q[t].push_front(q[cnt].back());
          q[cnt].pop_back();
        }
        vis[0][q[t].front()] = t;
        vis[1][v] = -1;
      } else
        end = p = cnt;
    }
    if (p != -1) end = p;
    int first = 1;
    while (!q[end].empty()) {
      int t1 = 0, t2 = 0;
      if (!q[star].empty() && !q[star].front()) {
        q[star].pop_front();
        continue;
      } else {
        if (!q[end].empty() && q[end].front()) {
          if (first)
            first = 0;
          else
            printf(" ");
          printf("%d", q[end].front()), t1 = 2;
        }
        if (!q[star].empty() && q[star].front())
          printf(" %d", q[star].front()), t1 = 1;
      }
      if (!q[star].empty()) q[star].pop_front();
      if (!q[end].empty()) q[end].pop_front();
    }
    printf("\n");
  }
  return 0;
}
