#include <fstream>
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int grad[100005],n,m,flag;
vector <int>graf[100005],s,af;
stack<int>rez;
struct muchii{
int x,y;
bool v;
}mu[500005];
int main()
{
f>>n>>m;
int x,y;
for(int i=1;i<=m;i++)
{
f>>x>>y;
graf[x].push_back(i);
graf[y].push_back(i);
mu[i]={x,y,0};
}
for(int i=1;i<=n;i++)
if(graf[i].size()%2==1){
flag=1;
break;
}
if(flag==1)
g<<"-1";
else{
rez.push(1);
while(!rez.empty()){
int nod=rez.top();
if(!graf[nod].empty()){
int muchie=graf[nod].back();
graf[nod].pop_back();
if(!mu[muchie].v)
mu[muchie].v=1,rez.push(nod==mu[muchie].x?mu[muchie].y:mu[muchie].x);
}
else {
af.push_back(nod);
rez.pop();
}
}
}
for(int i=0;i<af.size();i++)
g<<af[i]<<" ";
}