#include<iostream>
#include<vector>
#include<queue>
using namespace std;
const int N=100005;
int n,m;
vector<int> g[N];
queue<int> q;
bool had[N];
void DFS(int now){
printf("%d ",now);
had[now]=true;
for(int i=0;i<g[now].size();i++){
if(had[g[now][i]]==false) DFS(g[now][i]);
}
return ;
}
void BFS(){
while(!q.empty()){
int now=q.front();
for(int i=0;i<g[now].size();i++){
if(had[g[now][i]]==true){
had[g[now][i]]=false;
q.push(g[now][i]);
printf("%d ",g[now][i]);
}
}
q.pop();
}
return ;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
int x,y;
scanf("%d%d",&x,&y);
g[x].push_back(y);
}
DFS(1);
q.push(1);
printf("\n1 ");
had[1]=false;
BFS();
return 0;
}