#include<bits/stdc++.h>
using namespace std;
int n,m;
bool vis[1000009];
vector <int> a[1000009];
void dfs(int now){
cout<<now<<" ";
vis[now] = 1;
for(int i = 0;i<a[now].size();i++){
if(vis[a[now][i]] == 0){
dfs(a[now][i]);
}
}
}
bool vised[100009];
void bfs(int start){
queue<int>q;
q.push(start);
vised[start] = 1;
while(!q.empty()){
int last = q.front();
cout<<last<<" ";
q.pop();
for(int i = 0;i<a[last].size();i++){
if(vised[a[last][i]] == 0){
q.push(a[last][i]);
vised[a[last][i]] = 1;
}
}
}
}
int main(){
cin>>n>>m;
int u,v;
for(int i = 1;i<=m;i++){
cin>>u>>v;
a[u].push_back(v);
}
for(int i = 1;i<=n;i++){
sort(a[i].begin(),a[i].end());
}
for(int i = 1;i<=n;i++){
if(!vis[i]){
dfs(i);
}
}
cout<<endl;
for(int i = 1;i<=n;i++){
if(!vised[i]){
bfs(i);
}
}
return 0;
}