#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
bool a[110][110];
bool flag[110];
int n,e;
void init();
void dfs(int x);
int main()
{
//freopen("dfs1.in","r",stdin);
//freopen("dfs5.out","w",stdout);
init();
dfs(1);
return 0;
}
void init()
{
cin>>n>>e;
memset(flag,0,sizeof(flag));
memset(a,0,sizeof(a));
int x,y;
for(int i=1;i<=e;++i)
{
cin>>x>>y;
a[x][y]=1;//无向图处理双向
a[y][x]=1;
}
}
void dfs(int x)
{
cout<<x<<' ';
flag[x]=1;//把遍历点设为已访问
for(int i=1;i<=n;++i) //寻找相邻连通的下一个节点
if(!flag[i]&&a[x][i]==1) dfs(i);//如果找到以这个节点接着遍历
}
/**************************************************************
Problem: 2052
User: admin
Language: C++
Result: Accepted
Time:25 ms
Memory:2084 kb
****************************************************************/