program euler;
var g:array of array of longint;
cd,sol:array[1..100000] of longint;
m,n,nr,i,j,k:longint;
fi,fo:text;
procedure citire;
var i,j,k:longint;
begin
readln(fi,n,m);
setlength(g,n+1,1);
for k:=1 to m do
begin
readln(fi,i,j);
g[i,0]:=g[i,0]+1;
setlength(g[i],g[i,0]+1);
g[i,g[i,0]]:=j;
g[j,0]:=g[j,0]+1;
setlength(g[j],g[j,0]+1);
g[j,g[j,0]]:=i;
end;
end;
function eulerian:boolean;
var i:longint;
ok:boolean;
begin
ok:=true;
for i:=1 to n do
if g[i,0] mod 2<>0 then
begin
ok:=false;
break;
end;
eulerian:=ok;
end;
procedure sterge(x,y:longint);
var i:longint;
begin
for i:=1 to g[x,0] do
if g[x,i]=y then
begin
g[x,i]:=0;
break;
end;
for i:=1 to g[y,0] do
if g[y,i]=x then
begin
g[y,i]:=0;
break;
end;
end;
procedure euler(x:longint);
begin
for k:=1 to g[sol[x],0] do
if k<=g[sol[x],0] then
if g[sol[x],k]>0 then
begin
nr:=nr+1;
for j:=nr downto x+1 do
sol[j]:=sol[j-1];
sol[x+1]:=g[sol[x],k];
sterge(sol[x],g[sol[x],k]);
x:=x+1;
euler(x);
end;
end;
begin
assign(fi,'ciclueuler.in'); reset(fi);
assign(fo,'ciclueuler.out'); rewrite(fo);
citire;
if not eulerian then
writeln(fo,-1)
else
begin
i:=1;sol[1]:=1;
while sol[i]<>0 do
begin
euler(i);
i:=i+1;
end;
for i:=1 to nr do
write(fo,sol[i],' ');
end;
close(fi);
close(fo);
end.