#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
bool vis[N];
vector<int>g[N];
bool cmp(int a,int b)
{
return a<b;
}
void dfs(int i)
{
int j;
cout<<i<<" ";
vis[i]=1;
for(j=0;j<g[i].size();j++)
if(!vis[g[i][j]])
dfs(g[i][j]);
}
void bfs(int i)
{
queue<int>q;
q.push(i);
vis[i]=1;
while(!q.empty())
{
int now=q.front();
cout<<now<<" ";
for(int j=0;j<g[now].size();j++)
{
if(!vis[g[now][j]])
{
q.push(g[now][j]);
vis[g[now][j]]=1;
}
}
q.pop();
}
}
int main()
{
int i,j;
int u,v;
int n,m;
cin>>n>>m;
for(i=1;i<=m;i++)
{
cin>>u>>v;
g[u].push_back(v);
sort(g[u].begin(),g[u].end(),cmp);
}
for(i=1;i<=n;i++)
if(!vis[i])dfs(i);
memset(vis,0,sizeof(vis));
cout<<endl;
for(i=1;i<=n;i++)
if(!vis[i])bfs(i);
return 0;
}