#include<cstdio>
#include<vector>
using namespace std;
const int nmax=100005;
vector <int> g[nmax];
vector <int> st,ans;
int from[5*nmax], to[5*nmax];
bool viz[5*nmax];
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
int n,i,m,nod,muchie,u,w;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&u,&w);
g[u].push_back(i);
g[w].push_back(i);
from[i]=u;
to[i]=w;
}
for(i=1;i<=n;i++)
{
if((int)g[i].size()%2)
{
printf("-1");
return 0;
}
}
st.push_back(1);
while(!st.empty())
{
nod=st.back();
if(!g[nod].empty())
{
muchie=g[nod].back();
g[nod].pop_back();
if(!viz[muchie])
{
viz[muchie]=1;
if(nod==from[muchie])
st.push_back(to[muchie]);
else
st.push_back(from[muchie]);
}
}
else
{
st.pop_back();
ans.push_back(nod);
}
}
for(i=0;i<ans.size();i++)
printf("%d ",ans[i]);
}