#include<cstdio>
#include<stack>
using namespace std;
const int N = 10010, M = 50010;
int h[N],e[M*2],ne[M*2],idx=1;
int n,m;
stack<int> s,ans;
void add(int a,int b)
{
e[idx]=b;ne[idx]=h[a];h[a]=idx++;
}
void euler()
{
s.push(1);
while(!s.empty())
{
int x=s.top(),i=h[x];
if(i)
{
h[x]=ne[i];
s.push(e[i]);
}
else
{
ans.push(x);
s.pop();
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int a,b;scanf("%d%d",&a,&b);
add(a,b);add(b,a);
}
euler();
while(!ans.empty())
{
printf("%d\n",ans.top());
ans.pop();
}
return 0;
}
#include<cstdio>
#include<stack>
using namespace std;
const int N = 10010, M = 50010;
int h[N],e[M<<1],ne[M<<1],idx=1;
int n,m,ans[M<<1],siz;
void add(int a,int b)
{
e[idx]=b;ne[idx]=h[a];h[a]=idx++;
}
void dfs(int x)
{
for(int i=h[x];i;i=h[x])
{
int y=e[i];h[x]=ne[i];
dfs(y);
}
ans[++siz]=x;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int a,b;scanf("%d%d",&a,&b);
add(a,b);add(b,a);
}
dfs(1);
for (int i=siz;i>=1;i--) printf("%d\n",ans[i]);
return 0;
}