#include <bits/stdc++.h>
using namespace std;
vector<int> d[100001];
int n,m;
bool vis1[100001],vis2[100001];
queue<int> q;
void dfs(int x){
cout<<x<<" ";
for(int i=0;i<d[x].size();i++){
if(!vis1[d[x][i]]){
dfs(d[x][i]);
vis1[d[x][i]]=true;
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<m;i++){
int x,y;
cin>>x>>y;
d[x].push_back(y);
}
for(int i=1;i<=n;i++)sort(d[i].begin(),d[i].end());
vis1[1]=vis2[1]=true;
q.push(1);
dfs(1);
cout<<endl;
while(!q.empty()){
cout<<q.front()<<" ";
for(int i=0;i<d[q.front()].size();i++){
if(!vis2[d[q.front()][i]]){
q.push(d[q.front()][i]);
vis2[d[q.front()][i]]=true;
}
}
q.pop();
}
return 0;
}