#include
#include
#include
#include
using namespace std;
struct node{
int idx;
node(){
}
node(int _idx){
idx=_idx;
}
bool operator <(const node &tmp) const{
return idx > tmp.idx;
}
};
int main()
{
int n;
int m;
cin>>n>>m;
vectorgraph[n+5];
for(int i=0; i>a>>b;
graph[a].push_back(b);
graph[b].push_back(a);
}
int s=1;
bool niza[n+5];
for(int i=0; i<=n; i++){
niza[i]=false;
}
niza[s]=true;
priority_queuepq;
pq.push(node(s));
while(!pq.empty()){
node c=pq.top();
cout << c.idx << " ";
pq.pop();
niza[c.idx]=true;
for(int i=0; i < graph[c.idx].size(); i++){
int sosed=graph[c.idx][i];
if(niza[sosed]==false){
pq.push(node(sosed));
niza[sosed]=true;
}
}
}
return 0;
}