#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int n,m;
vector <int> v[100005],v2[100005];
bool flag[100005],flag2[100005];
queue <int> q;
void dfs(int x)
{
cout<<x<<' ';
for (int i=0,sz=v[x].size(); i<sz; i++){
if (!flag[v[x][i]]){
flag[v[x][i]]=1;
dfs(v[x][i]);
}
}
}
int main()
{
cin>>n>>m;
for (int i=1; i<=m; i++){
int x,y;
cin>>x>>y;
v[x].push_back(y);
v2[x].push_back(y);
}
flag[1]=1;
dfs(1);
cout<<endl;
flag2[1]=1;
q.push(1);
while (!q.empty()){
int x=q.front();
q.pop();
cout<<x<<' ';
for (int i=0,sz=v2[x].size(); i<sz; i++){
if (!flag2[v2[x][i]]){
flag2[v[x][i]]=1;
q.push(v[x][i]);
}
}
}
return 0;
}