#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
****************************************************************/