#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
#include<string.h>
using namespace std;
int n,m;
int vis[100005];
vector<int>map[100005];
void bfs(int s){
queue<int>q;
q.push(s);
vis[s]=1;
while(!q.empty()){
int start=q.front();
cout<<start<<" ";
q.pop();
for(int i=0;i<map[start].size();i++){
if(vis[map[start][i]]==0) {
q.push(map[start][i]);
vis[map[start][i]]=1;
}
}
}
return;
}
void dfs(int s){
if(vis[s]==0){
cout<<s<<" ";
vis[s]=1;
}
else return;
for(int i=0;i<map[s].size();i++){
if(vis[map[s][i]]==0) {
dfs(map[s][i]);
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<m;i++){
int a,b;
cin>>a>>b;
map[a].push_back(b);
}
for(int i=0;i<n;i++){
sort(map[i].begin(),map[i].end());
}
dfs(1);
cout<<endl;
memset(vis,0,sizeof(vis));
bfs(1);
return 0;
}