#include<stdio.h>
#define MAX 10000
#define NIL -1
struct node{
  int p,lc,rs;
};
struct node T[MAX];
int n;
void pre(int);
void in(int);
void post(int);
int main(){
  int i,id,lc,rs,z;
  scanf("%d",&n);
  for(i=0;i<n;i++){
    T[i].p=NIL;
  }
  for(i=0;i<n;i++){
    scanf("%d%d%d",&id,&lc,&rs);
    T[id].lc=lc;T[id].rs=rs;
    if(rs!=NIL)T[rs].p=id;
    if(lc!=NIL)T[lc].p=id;
  }
  for(i=0;i<n;i++){
    if(T[i].p==NIL)z=i;
  }
  printf("Preorder\n");
  pre(z);
  printf("\n");
  printf("Inorder\n");
  in(z);
  printf("\n");
  printf("Postorder\n");
  post(z);
  printf("\n");
 
  return 0;
}

void pre(int x){
  if(x==NIL)return 0;
  printf(" %d",x);
  pre(T[x].lc);
  pre(T[x].rs);
  
}
void in(int x){
   if(x==NIL)return 0;
   in(T[x].lc);
   printf(" %d",x);
   in(T[x].rs);
}
void post(int x){
   if(x==NIL)return 0;
   post(T[x].lc);post(T[x].rs);
    printf(" %d",x);
}

