NO!!!
#include<bits/stdc++.h>
using namespace std;
struct yy{
int cg;
int ck;
};
yy m[1000005];
int n[100005];
int k[100005];
int k1[100005];
bool cmp(yy x,yy y){
if(x.cg!=y.cg){
return x.cg<y.cg;
}
return x.ck<y.ck;
}
void f(int cs){
if(k[cs]==1){
return ;
}
k[cs]=1;
if(n[cs]==0){
cout<<cs<<" ";
return ;
}
cout<<cs<<" ";
for(int i=n[cs];m[i].cg==cs;i++){
f(m[i].ck);
}
return ;
}
void f1(int cs){
if(k[cs]==1){
return ;
}
k[cs]=1;
k1[cs]=1;
for(int i=n[cs];m[i].cg==cs;i++){
if(k1[m[i].ck]==0){
cout<<m[i].ck<<" ";
k1[m[i].ck]=1;
}
}
for(int i=n[cs];m[i].cg==cs;i++){
f1(m[i].ck);
}
return ;
}
int main(){
int a,b;
cin>>a>>b;
for(int i=1;i<=b;i++){
cin>>m[i].cg>>m[i].ck;
}
sort(m+1,m+1+b,cmp);
for(int i=1;i<=b;i++){
if(n[m[i].cg]==0){
n[m[i].cg]=i;
}
}
f(1);
for(int i=1;i<=a;i++){
k[i]=0;
}
cout<<endl<<1<<" ";
f1(1);
return 0;
}