#include <stdio.h>

struct tree{
 int id,left,right;
};

struct tree a[10000];

void inparse(int m)
{
 if(m==-1) return;
 inparse(a[m].left);
 printf(" %d",m);
 inparse(a[m].right);
}

void preparse(int m)
{
 if(m==-1) return;
 printf(" %d",m);
 preparse(a[m].left);
 preparse(a[m].right);
}

void postparse(int m)
{
??if(m==-1) return;
??postparse(a[m].left);
??postparse(a[m].right);
??printf(" %d",m);
}

int main(int argc,char const *argv[])
{
??int i,n,m,left,right,id;

??scanf("%d",&n);
??for(i=0;i<n;i++){
????a[i].id=-1;
??}

??for(i=0;i<n;i++){
????scanf("%d %d %d",&m,&left,&right);
????a[m].left=left;
????a[m].right=right;
????if(left!=-1) a[left].id=m;
????if(right!=-1) a[right].id=m;
??}

??for(i=0;i<n;i++){
??????if(a[i].id==-1) id==i;
??}

??printf("Preorder\n");
??preparse(id);
??printf("\nInorder\n");
??inparse(id);
??printf("\nPostorder\n");
??postparse(id);
??printf("\n");

??return 0;
}