#include <fstream>
#include <stack>
#include <vector>
using namespace std;
#define NMax 100005
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
stack<int> st;
vector<int> v[NMax];
vector<int>::iterator it;
int n,m;
int plm;
void euler(int s)
{
int y;
st.push(s);
while(!st.empty())
{
s = st.top();
if(v[s].size())
{
y = v[s][0];
st.push(y);
v[s].erase(v[s].begin());
for(it=v[y].begin();it!=v[y].end();++it) if(*it == s) break;
v[y].erase(it);
}
else
{
g<<s<<" ";
st.pop();
}
}
}
int main()
{
int i,a,b;
f>>n>>m;
for(i=1;i<=m;++i)
{
f>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
euler(1);
f.close();
g.close();
return 0;
}