#include <fstream>
#include <vector>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n,m,i,x,y,ct,r,nr,t,k,gr[100005],ciclu[500005],s[100005],sol[500005];
bool viz[500005];
struct arc{
int nod,poz;
};
vector <arc> g[100005];
int main()
{
fin>>n>>m;
for(i=1;i<=m;i++){
fin>>x>>y;
g[x].push_back({y,i});
g[y].push_back({x,i});
gr[x]++;
gr[y]++;
}
for(i=1;i<=n;i++)
if(gr[i]%2==1){
fout<<-1;
return 0;
}
ciclu[++k]=1;
while(k){
if(!gr[ciclu[k]]){
while(!gr[ciclu[k]] && k>0)
sol[++t]=ciclu[k--];
}
else{
for(i=s[ciclu[k]];i<g[ciclu[k]].size();i++){
int nou=g[ciclu[k]][i].nod;
int poz=g[ciclu[k]][i].poz;
if(!viz[poz]){
viz[poz]=1;
gr[ciclu[k]]--;
gr[nou]--;
s[ciclu[k]]=i;
ciclu[++k]=nou;
break;
}
}
}
}
if(t!=m+1){
fout<<-1;
return 0;
}
for(i=t;i>1;i--)
fout<<sol[i]<<' ';
return 0;
}