#include<bits/stdc++.h>
using namespace std;
int n,m,h[1000005];
int cnt;
bool b[1000005];
struct pp
{
int nt,v;
}e[1000005],a[1000005];
void add(int u,int v)
{
cnt++;
e[cnt].v=v;
e[cnt].nt=h[u];
h[u]=cnt;
return;
}
void dfs(int x)
{
cout<<x<<" ";
for(int i=h[x];i!=0;i=e[i].nt)
{
if(!b[e[i].v])
{
b[e[i].v]=1;
dfs(e[i].v);
}
}
}
queue<int> q;
void bfs(int x)
{
for(int i=1;i<=m;i++) b[i]=0;
b[x]=1;
q.push(x);
while(!q.empty())
{
int x=q.front();
q.pop();
cout<<x<<" ";
for(int i=h[x];i!=0;i=e[i].nt)
{
if(!b[e[i].v])
{
b[e[i].v]=1;
q.push(e[i].v);
}
}
}
}
bool cmp(pp a,pp b)
{
return a.nt>b.nt;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>a[i].v>>a[i].nt;
}
sort(a+1,a+1+m,cmp);
for(int i=1;i<=m;i++)
{
add(a[i].v,a[i].nt);
}
dfs(1);
cout<<endl;
bfs(1);
return 0;
}