#include<stdio.h>
#include<string.h>
#define max 20
int g[max][max];
int n,e;
int vis[max],stack[max];
void dfs(int v)
{
int i,temp,top=-1;
stack[++top]=v;
vis[v]=1;
printf("%d ",v);
while(top!=-1)
{
temp=stack[top];
for(i=0;i<n;i++)
{
if(g[temp][i]&&vis[i]==0)
{
vis[i]=1;
stack[++top]=i;
printf("%d ",i);
break;
}
}
if(i==n)
top--;
}
}
main()
{
int i,j,a,b,c;
while(scanf("%d%d",&n,&e)!=EOF)
{
memset(g,0,sizeof(g));
while(e--)
{
scanf("%d%d",&a,&b);
g[a][b]=1;
g[b][a]=1;
}
memset(vis,0,sizeof(vis));
dfs(0);
printf("/n");
}
}
//测试数据
/*8 10
0 1
0 2
1 3
1 4
2 5
2 6
3 7
4 7
5 7
6 7*/
//输出结果: 0 1 3 7 4 5 2 6