#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int G[510][510];
int n, f;
int path[2000];
int degree[510];
int index;

void dfs(int u){
for(int v = 1;v <= n; v++){
    if(G[u][v]){
        G[u][v]--;
        G[v][u]--;
        dfs(v);
    }
}
path[index++] = u;
}

int main()
{
    while(scanf("%d",&f) != EOF){
        memset(G,0,sizeof(G));
        memset(path,0,sizeof(path));
        memset(degree,0,sizeof(degree));
        n = 0;
        for(int i = 0;i < f; i++){
            int a, b;
            scanf("%d%d",&a,&b);
            G[a][b]++;
            G[b][a]++;
            degree[a]++;
            degree[b]++;
            int temp = a < b ? b : a;
            n = n < temp ? temp : n;
        }
        int st = 1;
        for(int i = 1;i <= n; i++){
            if((degree[i] & 1) == 1){
                st = i;
                break;
            }
        }
        index = 0;
        dfs(st);
        for(int i = index-1;i>=0;i--){
            printf("%d\n",path[i]);
        }
    }
    return 0;
}
/**************************************************************
	Problem: 2054
	User: admin
	Language: C
	Result: Accepted
	Time:39 ms
	Memory:2172 kb
****************************************************************/