#include<bits/stdc++.h>
using namespace std;
int N, M, x[500009], y[500009];
bool deleted[500009];
vector < int > v[100009];
vector < int > :: iterator currIt[100009];
void euler (int nod)
{
while (currIt[nod] != v[nod].end ())
{
int e = *currIt[nod];
currIt[nod] ++;
if (!deleted[e])
deleted[e] = 1,
euler (x[e] ^ y[e] ^ nod),
printf ("%d ", nod);
}
}
int main ()
{
freopen ("ciclueuler.in", "r", stdin);
freopen ("ciclueuler.out", "w", stdout);
scanf ("%d %d", &N, &M);
for (int i=1; i<=M; i++)
{
scanf ("%d %d", &x[i], &y[i]);
v[x[i]].push_back (i);
v[y[i]].push_back (i);
}
for (int i=1; i<=N; i++)
if (v[i].size () & 1)
{
printf ("-1\n");
return 0;
}
for (int i=1; i<=N; i++)
currIt[i] = v[i].begin ();
euler (1), printf ("\n");
return 0;
}