#include<stdio.h>
#include<stdlib.h>
typedef struct M {
int i;
struct M *u;
}N;
int i,n,m,k,j,t,e,f,u,v,h,a[500001],b[500001],w[100001],*g[100001],c[100001],s[100001];
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(w[i]*sizeof(int));
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);
}
}