#include<stdio.h>
#include<stdlib.h>
#define P 100001
typedef struct M {
int i;
struct M *u;
}N;
int i,n,m,j,t,e,f,u,v,h,a[5*P],b[5*P],w[P],*g[P],c[P],s[P];
N *l,*r,*p,*q,*x;
int main()
{
freopen("ciclueuler.in","r",stdin),freopen("ciclueuler.out","w",stdout),scanf("%d%d",&n,&m);
for(i=0;i<m;++i)
scanf("%d%d",a+i,b+i),++w[a[i]],++w[b[i]];
for(i=1;i<=n;w[i++]=0)
g[i]=(int*)malloc(4*w[i]);
for(i=0;i<m;i++)
g[a[i]][w[a[i]]++]=b[i],g[b[i]][w[b[i]]++]=a[i];
for(c[1]=s[1]=s[0]=1;s[0];)
for(j=s[s[0]--],i=0;i<w[j];i++)
if(!c[g[j][i]])
c[g[j][i]]=1,s[++s[0]]=g[j][i];
for(i=1;i<=n&&!f;i++)
if(!c[i]||w[i]%2)
printf("-1"),f=1;
if(!f) {
l=(N*)malloc(sizeof(N));
for(l->i=v=1,l->u=NULL;v;v=u,u=0)
for(r=l;r&&!u;r=r->u)
if(w[r->i]) {
u=1,p=r,q=r->u;
do {
for(j=g[p->i][--w[p->i]],h=t=0;t<w[j]&&!h;t++)
if(g[j][t]==p->i)
for(h=1,e=t;e<w[j]-1;e++)
g[j][e]=g[j][e+1];
x=(N*)malloc(sizeof(N));
x->i=j,x->u=NULL,p->u=x,p=x,w[j]--;
}while(x->i!=r->i);
p->u=q;
}
for(r=l->u;r;r=r->u)
printf("%d ",r->i);
}
return 0;
}