rt B3642
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=100100;
int n;
struct Node{
int l,r;
}tree[N];
void pre_order(int x){
cout<<x<<" ";
if(tree[x].l!=0){
pre_order(tree[x].l);
}
if(tree[x].r!=0){
pre_order(tree[x].r);
}
}
void in_order(int x){
if(tree[x].l!=0){
pre_order(tree[x].l);
}
cout<<x<<" ";
if(tree[x].r!=0){
pre_order(tree[x].r);
}
}
void post_order(int x){
if(tree[x].l!=0){
pre_order(tree[x].l);
}
if(tree[x].r!=0){
pre_order(tree[x].r);
}
cout<<x<<" ";
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>tree[i].l>>tree[i].r;
}
pre_order(1);
cout<<"\n";
in_order(1);
cout<<"\n";
post_order(1);
}