#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
typedef long long ll;
const int N=1e5+10;
const int M=1e6+10;
int n,m,x,y;
vector<int> a[N];
struct S{
int u,v;
}s[M];
bool cmp(S q,S w){
if(q.u==w.u)return q.v<w.v;
return q.u<w.u;
}
bool v[N];
void fs(int x){
v[x]=1;
printf("%d ",x);
for(int i=0;i<a[x].size();i++){
int p=a[x][i];
if(!v[p]){
fs(p);
}
}
return;
}
int q[N],f,r;
void g(int x){
memset(v,0,sizeof v);
q[++r]=x;
while(f<r){
int k=q[++f];
printf("%d ",k);
for(int i=0;i<a[k].size();i++){
int p=a[k][i];
if(v[p]==0){
v[p]=1;
q[++r]=p;
}
}
}
return ;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++){
scanf("%d%d",&x,&y);
s[i].u=x;
s[i].v=y;
}
sort(s,s+m,cmp);
for(int i=0;i<m;i++){
a[s[i].u].push_back(s[i].v);
}
fs(1);
printf("\n");
g(1);
return 0;
}