#include<stdio.h>
#define N 25

typedef struct{
  int p;
  int sib;
  int left;
  int right;
  int deg;
  int dep;
  int hei;
  
}Node;

Node T[N];

void preParse(int);
void inParse(int);
void postParse(int);

int n;
int main(){
  int i,k,l,r,key,d;

  scanf("%d",&n);

   for(i=0;i<n;i++){
   T[i].p=-1;
   T[i].sib=-1;
   }
  for(i=0;i<n;i++){
    scanf("%d",&key);
    scanf("%d",&l);
    scanf("%d",&r);
    T[key].left=l;
    T[key].right=r;

      T[l].p=key;
      T[r].p=key;
  }

 
  for(i=0;i<n;i++){
    if(T[i].p==-1){printf("Preorder\n");
                    preParse(i);
		    printf("Inorder\n");
                   inParse(i);
		   printf("Postorder\n");
                  postParse(i); 
    }
  }             
  return 0;
}

void preParse(int u){
  static int count=0;
  if(u==-1) return;
  if(count==n-1) printf(" %d\n",u);
  else printf(" %d",u);
  count++;
        preParse(T[u].left);
        preParse(T[u].right);
 
}

void inParse(int u){
  static int count=0;
   if(u==-1) return;
   count++;
       inParse(T[u].left);
       if(count==n) printf(" %d\n",u);
	 else printf(" %d",u);
       inParse(T[u].right);
}

void postParse(int u){
  
  if(u==-1) return;
       postParse(T[u].left);
       postParse(T[u].right);
  if(T[u].p==-1) printf(" %d\n",u);
  else  printf(" %d",u);
         
}
   