#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
const int N = 100010;
int n,m;
bool st[N];
vector<int> h[N];
queue<int> q;
void dfs(int u)
{
printf("%d ",u);
st[u] = true;
for(int i = 0;i < h[u].size();i ++ )
{
int j = h[u][i];
if(!st[j]) dfs(j);
}
}
void bfs()
{
q.push(1);
printf("%d ",1);
st[1] = true;
while(q.size())
{
int t = q.front();
q.pop();
for(int i = 0;i < h[t].size();i ++ )
{
int j = h[t][i];
if(!st[j])
{
st[j] = true;
printf("%d ",j);
q.push(j);
}
}
}
}
int main()
{
scanf("%d%d",&n,&m);
while(m -- )
{
int a,b;
scanf("%d%d",&a,&b);
h[a].push_back(b);
}
for(int i = 0;i < n;i ++ ) sort(h[i].begin(),h[i].end());
dfs(1);
printf("\n");
memset(st,false,sizeof st);
bfs();
return 0;
}