#include <fstream>
#include <vector>
#include<stack>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector<int> G[100001];
stack<int> s;
void ciclu(){
s.push(1);
while (!s.empty()){
int t=s.top();
if (!G[t].size()){
out<<t<<" ";
s.pop();
} else {
int y=G[t][0];
G[t].erase(G[t].begin());
int yLoc=-1;
for (int i=0;i<G[y].size();i++)
if (G[y][i]==t){
yLoc=i;
break;
}
G[y].erase(G[y].begin()+yLoc);
s.push(y);
}
}
}
int main() {
int n,k;
in>>n>>k;
for (int i=1;i<=k;i++){
int x,y;
in>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
for (int i=1;i<=n;i++)
if (G[i].size()&1){
out<<"-1\n";
return 0;
}
ciclu();
return 0;
}