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
****************************************************************/