//链式前项星
#include<iostream>
#include<cstdio>
const int maxn=10001,maxm=100001;
int to[maxm],ne[maxm],be[maxn],cnt;
bool p[maxm];
void add(int x,int y){
cnt++;
to[cnt]=y;
ne[cnt]=be[x];
be[x]=cnt;
}
void dfs(int x){
int i;p[x]=true;
printf("%d ",x);
for( i = be[x] ; i ; i = ne[ i ])
if( !p[to[i]] )
dfs( to[i] );
}
int main(){
int i,j,k,m,n;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++){
int x,y;
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
}
dfs(1);
return 0;
}
#include<iostream>
#include<cstdio>
const int maxn=10001,maxm=100001;
int to[maxm],ne[maxm],be[maxn],cnt;
bool p[maxm];
void add(int x,int y){
cnt++;
to[cnt]=y;
ne[cnt]=be[x];
be[x]=cnt;
}
void dfs(int x){
int i;p[x]=true;
printf("%d ",x);
for( i = be[x] ; i ; i = ne[ i ])
if( !p[to[i]] )
dfs( to[i] );
}
int main(){
int i,j,k,m,n;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++){
int x,y;
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
}
dfs(1);
return 0;
}