#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
#ifdef LOCAL
#define fin cin
#define fout cout
#else
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
#endif
vector<pair<int, int>> adj[100001];
bool vizitat[500001];
void euler(int u) {
for (auto [v,i]:adj[u]) {
if (vizitat[i])
continue;
vizitat[i] = true;
euler(v);
}
fout << u << ' ';
}
int main() {
int n, m, u, v;
fin >> n >> m;
for (int i=1; i<=m; i++) {
fin >> u >> v;
adj[u].push_back({v, i});
adj[v].push_back({u, i});
}
for (u=1; u<=n; u++)
if (adj[u].size() % 2 == 1) {
fout << -1;
return 0;
}
euler(1);
}