#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<list>
#include<vector>
using namespace std;
const int maxn=1000010;
int num[maxn];
int que[maxn];
int pointf[maxn];
int pointl[maxn];
bool pos[maxn];
bool vis[maxn];
void dfs(int n,int p){
if(n==-1||n==0)return;
que[p]=n;pos[p]=true;vis[n]=true;
dfs(pointf[n],p+2);
}
int main()
{
int n,i,j,k,a,b,cnt=1;
scanf("%d",&n);
memset(pointl,-1,sizeof(pointl));
memset(pointf,-1,sizeof(pointf));
for(i=0;i<n;++i){
scanf("%d%d",&a,&b);
pointf[a]=b;pointl[b]=a;
if(!vis[a]){
num[cnt]=a;cnt++;
}
if(!vis[b]){
num[cnt]=b;cnt++;
}
}num[0]=0;
for(i=0;i<cnt;++i){
if(!vis[num[i]]){
int ans=num[i];
while(1){
if(pointl[ans]==-1||ans==0)break;
ans=pointl[ans];
}
vis[ans]=true;
for(j=0;j<n;++j){
if(!pos[j]){dfs(pointf[ans],j+2);pos[j]=true;break;}
}
que[j]=ans;
}
}
for(i=1;i<=n;++i){
printf("%d ",que[i]);
}
printf("\n");
return 0;
}