program euler;
var g:array of array of longint;
cd,sol:array[1..100000] of longint;
m,n,nr,i,j: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 euler(x:longint);
var st,sf,i,nod,y,j:longint;
begin
st:=1; sf:=1;
cd[st]:=x;
while st<=sf do
begin
nod:=cd[st];
if g[nod,0]>0 then
begin
y:=g[nod,g[nod,0]];
g[nod,0]:=g[nod,0]-1;
sf:=sf+1;
cd[sf]:=y;
for i:=1 to g[y,0] do
if g[y,i]=nod then
begin
for j:=i to g[y,0]-1 do
g[y,j]:=g[y,j+1];
g[y,0]:=g[y,0]-1;
break;
end;
end
else
begin
nr:=nr+1;
sol[nr]:=nod;
st:=st+1;
end;
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
euler(1);
for i:=1 to nr do
write(fo,sol[i],' ');
end;
close(fi);
close(fo);
end.