#include <cstdio>
#include <vector>
#include <stack>
using namespace std;
FILE * in=fopen("ciclueuler.in","r");
FILE * out=fopen("ciclueuler.out","w");
int n,m,visited[500005];
vector <pair <int,int>> G[100005];
stack <int> q;
vector <int> ans;
int main()
{
fscanf(in,"%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int x,y;
fscanf(in,"%d%d",&x,&y);
G[x].push_back({y,i});
G[y].push_back({x,i});
}
for(int i=1;i<=n;i++)
if(G[i].size() &1 || !G[i].size())
fprintf(out,"-1\n");
q.push(1);
while(!q.empty())
{
int nod =q.top();
if(G[nod].empty())
{
q.pop();
ans.push_back(nod);
}
else
{
int x,y;
x = G[nod].back().first;
y = G[nod].back().second;
G[nod].pop_back();
if(!visited[y])
{
visited[y]=1;
q.push(x);
}
}
}
for(int i=0;i<m;i++)
fprintf(out,"%d ",ans[i]);
return 0;
}