#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector<int>lista[100001];
int N, M, k=1, j, nod, fiu, i, ok=1;
int st[500001], sol[500001];
int main()
{
fin>>N>>M;
for(i=1; i<=M; i++)
{
fin>>nod>>fiu;
lista[nod].push_back(fiu);
lista[fiu].push_back(nod);
}
for(i=1; i<=N && ok; i++)
if(lista[i].size()%2!=0)
ok--;
if(ok==0)
fout<<"-1";
else
{
st[1]=1;
while(k>0)
{
nod=st[k];
if(lista[nod].size()!=0)
{
fiu=lista[nod].back();
k++;
st[k]=fiu;
lista[nod].pop_back();
lista[fiu].erase(find(lista[fiu].begin(), lista[fiu].end(), nod));
}
else
{
j++;
if(k>1)
fout<<st[k]<<" ";
k--;
}
}
}
return 0;
}