#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e6+100;
int n,m,a,b;
int h[MAXN],e[MAXN],ne[MAXN],idx;
bool st[MAXN];
struct niubi
{
int u,v;
}ch[MAXN];
bool cmp(niubi a,niubi b)
{
if(a.u==b.u) return a.v>b.v;
return a.u<b.u;
}
void add(int a,int b)
{
e[idx]=b;
ne[idx]=h[a];
h[a]=idx++;
}
void dfs(int u)
{
cout<<u<<" ";
st[u]=true;
for(int i=h[u];i!=-1;i=ne[i])
{
int j=e[i];
if(!st[j])
{
dfs(j);
}
}
}
void bfs()
{
queue<int>q;
q.push(1);
st[1]=true;
while(q.size())
{
int t=q.front();
cout<<t<<" ";
q.pop();
for(int i=h[t];i!=-1;i=ne[i])
{
int j=e[i];
if(!st[j])
{
st[j]=true;
q.push(j);
}
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
memset(h,-1,sizeof(h));
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>ch[i].u>>ch[i].v;
}
sort(ch+1,ch+1+m,cmp);
for(int i=1;i<=m;i++)
{
add(ch[i].u,ch[i].v);
add(ch[i].v,ch[i].u);
}
dfs(1);
cout<<endl;
memset(st,0,sizeof(st));
bfs();
return 0;
}