#include<iostream>
#include<cstring>
#include<queue>
#include<cstdio>
using namespace std;
bool a[110][110];
bool flag[110];
int n,e;
void init();
void bfs(int x);
int main()
{
//freopen("bfs5.in","r",stdin);
//freopen("bfs5.out","w",stdout);
init();
bfs(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 bfs(int x)
{
queue<int> q;
cout<<x<<' ';
flag[x]=1;//把遍历点设为已访问
q.push(x);//把当前点进队
while(!q.empty())//当队列非空
{
for(int i=1;i<=n;i++)
{
if(!flag[i]&&a[q.front()][i])//遍历队首元素的相邻点
{
cout<<i<<' ';//如果连通且没访问过进队
flag[i]=1;//一定要记得设访问标记,否会是死循环
q.push(i);
}
}
q.pop();
}
}
/**************************************************************
Problem: 2053
User: admin
Language: C++
Result: Accepted
Time:25 ms
Memory:2088 kb
****************************************************************/