/*
作者:桦清_L
*/
#include <iostream>
#include <cstring>
#include <map>
using namespace std;
int n;
struct node
{
int l;
int r;
}a[101];
void f_rec(int n,int s)
{
cout<<n;
if(s>0) cout<<" ";
if(a[n].l) f_rec(a[n].l,s-1);
if(a[n].r) f_rec(a[n].r,s-1);
}
void m_rec(int n,int s)
{
if(a[n].l) m_rec(a[n].l,s-1);
cout<<n;
if(s>0) cout<<" ";
if(a[n].r) m_rec(a[n].r,s-1);
}
void b_rec(int n,int s)
{
if(a[n].l) b_rec(a[n].l,s-1);
if(a[n].r) b_rec(a[n].r,s-1);
cout<<n;
if(s>0) cout<<" ";
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i].l>>a[i].r;
f_rec(1,n);
cout<<endl;
m_rec(1,n);
cout<<endl;
b_rec(1,n);
cout<<endl;
return 0;
}