#include<stdio.h>
typedef struct
{
int len;
int link[10005];
int now;
}node;
node vex[10005];
int yes[10005];
int n;
int m;
void dfs(int a)
{
if(yes[a]!=1)
{
printf("%d ",a);
yes[a]=1;
}
if(vex[a].now>=vex[a].len)
return;
for(int i=vex[a].now;i<vex[a].len;i++)
{
int temp=vex[a].link[vex[a].now];
vex[a].now++;
dfs(temp);
}
}
void bfs(int a)
{
if(yes[a]!=1)
{
printf("%d ",a);
yes[a]=1;
}
if(vex[a].now>=vex[a].len)
return;
for(int i=vex[a].now;i<vex[a].len;i++)
{
if(yes[vex[a].link[i]]!=1)
{
printf("%d ",vex[a].link[i]);
yes[ vex[a].link[i] ]=1;
}
}
for(int i=vex[a].now;i<vex[a].len;i++)
{
vex[a].now++;
bfs(vex[a].link[i]);
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
vex[a].link[ vex[a].len ]=b;
vex[a].len++;
}
for(int i=1;i<=n;i++)
{
if(vex[i].len>1)
{
for(int k=0;k<vex[i].len-1;k++)
for(int j=0;j<vex[i].len-k-1;j++)
{
if(vex[i].link[j]>vex[i].link[j+1])
{
int temp=vex[i].link[j+1];
vex[i].link[j+1]=vex[i].link[j];
vex[i].link[j]=temp;
}
}
}
}
dfs(1);
for(int i=1;i<=n;i++)
{
vex[i].now=0;
yes[i]=0;
}
printf("\n");
bfs(1);
}