#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
const int nmax = 100005;
vector<int> cycle;
vector<int> adj[nmax];
void euler(int vertex){
while(adj[vertex].empty() == false)
{
int ngb = adj[vertex].back();
adj[vertex].pop_back();
int idx = -1;
for(int i = 0; i < adj[ngb].size(); ++i)
if(adj[ngb][i] == vertex)
{idx = i; break;}
if(idx + 1){
adj[ngb].erase(adj[ngb].begin() + idx);
}
euler(ngb);
}
cycle.push_back(vertex);
}
int main()
{
int V, E;
fin >> V >> E;
for(int i = 1; i <= E; ++i){
int src, dst;
fin >> src >> dst;
adj[src].push_back(dst);
adj[dst].push_back(src);
}
euler(1);
cycle.pop_back();
for(auto el: cycle){
fout << el << ' ';
}
return 0;
}