program fence;
const maxn=2000;
var g:array[1..maxn,1..maxn] of longint;
du:array[1..maxn] of longint;
c:array[1..maxn] of longint;
i,k,n,x,y,min,max:longint;
procedure find(x:longint);
var j:longint;
begin
for j:=min to max do
if g[x,j]>0 then
begin
dec(g[x,j]);
dec(g[j,x]);
find(j);
end;
inc(k);
c[k]:=x;
end;
begin
fillchar(g,sizeof(g),0);
min:=2000; max:=-2000; k:=0;
readln(n);
for i:=1 to n do
begin
readln(x,y);
inc(g[x,y]);
inc(g[y,x]);
inc(du[x]);
inc(du[y]);
if x<min then min:=x;
if y<min then min:=y;
if x>max then max:=x;
if y>max then max:=y;
end;
for i:=min to max do
if du[i] mod 2=1 then break;
if i=max then find(min) else find(i);
for i:=k downto 1 do
writeln(c[i]);
end.
/**************************************************************
Problem: 2054
User: admin
Language: Pascal
Result: Wrong Answer
****************************************************************/