#include <cstdio>
#include <vector>
using namespace std;
#define MAX 100001
struct muc{
int x, y;
bool ok;
} v[MAX];
int sol[5*MAX], vf, n, m, rez;
vector <int> lista[MAX];
int euler();
int main()
{
int i, a ,b;
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
scanf("%d%d", &n, &m);
for(i=1; i<=m; i++){
scanf("%d%d", &a, &b);
v[i].x = a; v[i].y = b;
lista[a].push_back(i);lista[b].push_back(i);
}
rez = euler();
if(rez==1)
for(i=1; i<vf; i++) printf("%d ", sol[i]);
else printf("1\n");
return 0;
}
int euler(){
int a, b;
vf = sol[1] = 1;
while(!lista[sol[vf]].empty()){
while(!lista[sol[vf]].empty() and v[lista[sol[vf]][lista[sol[vf]].size()-1]].ok)
lista[sol[vf]].pop_back();
if(!lista[sol[vf]].empty()){
a = v[lista[sol[vf]][lista[sol[vf]].size()-1]].x;
b = v[lista[sol[vf]][lista[sol[vf]].size()-1]].y;
v[lista[sol[vf]][lista[sol[vf]].size()-1]].ok = true;
if(sol[vf]==a) sol[vf+1] = b;
else sol[vf+1] = a;
vf++;
}
}
if(vf==m+1) return 1;
return 0;
}