#include <fstream>
#include <vector>
using namespace std;
int n, m;
vector<int> L[100005];
pair<int, int> edge[500005];
int viz[500005];
int main()
{
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
f >> n >> m;
int x, y;
for(int i = 1; i <= m; i ++) {
f >> x >> y;
edge[i].first = x;
edge[i].second = y;
L[x].push_back(i);
L[y].push_back(i);
}
for(int i = 1; i <= n; i ++) {
if(L[i].size() % 2 != 0) {
g << "-1\n";
return 0;
}
}
vector<int> stk, ans;
stk.push_back(1);
while(!stk.empty()) {
int x = stk.back();
if(!L[x].empty()) {
int e = L[x].back();
L[x].pop_back();
if(!viz[e]) {
viz[e] = true;
if(edge[e].first == x)
stk.push_back(edge[e].second);
else stk.push_back(edge[e].first);
}
}
else {
stk.pop_back();
ans.push_back(x);
}
}
for(int i = 0; i < ans.size(); i ++)
g << ans[i] << " ";
g << "\n";
return 0;
}