#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int n,m,i,x,y,k,nr,st[500005],e[500005],start;
bool eulerian, viz[500005];
vector < pair <int, int> > v[100005];
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1; i<=m; i++)
{
scanf("%d%d",&x,&y);
v[x].push_back( make_pair(y,i));
v[y].push_back(make_pair(x,i));
viz[i]=1;
start=x;
}
eulerian=true;
for (i=1; i<=n&&eulerian==true; i++)
if (v[i].size()%2==1)
eulerian=false;
if (eulerian==false)
{
printf("-1\n");
return 0;
}
k=1;st[k]=start;
while(k>0){
if(v[st[k]].size()>0){
while(v[st[k]].size()>0&&viz[v[st[k]].back().second]==0){
v[st[k]].pop_back();
}
if(v[st[k]].size()>0){
int nod=v[st[k]].back().first;
int mc=v[st[k]].back().second;
viz[mc]=0;
v[st[k]].pop_back();
k++;
st[k]=nod;
}
}
else{
e[++nr]=st[k--];
}
}
if(nr-1!=m){
printf("-1\n");
return 0;
}
for (i=1; i<nr; i++)
printf("%d ",e[i]);
printf("\n");
return 0;
}