#include<bits/stdc++.h>
using namespace std;
int n,a,b,h[1025][1025],d[1025],c[1026],cnt;
void xx(int x)
{
for(int i=1;i<=500;i++)
if(h[x][i])//表示x-i有路
{
h[x][i]--;//将这条路删除,以免重复
h[i][x]--;//同上
xx(i);//递归查找
}
c[++cnt]=x;//存值
}
int main()
{
cin>>n;//n条相邻的边
for(int i=1;i<=n;i++)
{
cin>>a>>b;//a,b相邻
h[a][b]++;//表示a-b的路的条数
h[b][a]++;//同上
d[a]++;//算出每个点的度
d[b]++;//同上
}
int z=1;//初始值为1,因为可能是欧拉回路,没有奇点,所以可以从任何地方开始搜索
for(int i=1;i<=500;i++)//因为最多只有500个顶点
if(d[i]%2==1)
{
z=i;
break;//如果这个点的度为奇数的话,那他就是奇点,找到一个就可以结束了
}
xx(z);
for(int i=n+1;i>=1;i--)//n条边相邻,所以有n+1个点
//因为是从起点开始,递归查找,所以前面找到的实际上是后面的,所以倒着输出
cout<<c[i]<<endl;
}