#include<bits/stdc++.h>
using namespace std;
vector<int> a[1000009];
bool gone[1000009];
int n,m;
void dfs(int num,int times){
gone[num]=1;
if(!times){
cout<<num<<" ";
return;
}
cout<<num<<" ";
for(int i=0;i<a[num].size();i++){
if(!gone[a[num][i]]) dfs(a[num][i],times-1);
}
}
void bfs(){
memset(gone,false,sizeof(gone));
queue<int> que;
que.push(1);
while(!que.empty()){
int num=que.front();
cout<<num<<" ";
gone[num]=true;
for(int i=0;i<a[num].size();i++){
if(!gone[a[num][i]]){
que.push(a[num][i]);
gone[a[num][i]]=1;
}
}
que.pop();
}
}
int main(){
cin>>n>>m;
memset(gone,false,sizeof(gone));
for(int i=0;i<m;i++){
int x,y;
cin>>x>>y;
a[x].push_back(y);
}
for(int i=0;i<n;i++){
sort(a[i].begin(),a[i].end());
}
dfs(1,n);
cout<<endl;
bfs();
return 0;
}