#include <stdio.h>
#define NIL -1
#define N 100



struct Node{
  int p,l,r;
};
struct Node A[N];


main()
{

  int i,j;
  int n,id,e,c;

  scanf("%d",&n);
  
  for(i = 0; i < n; i++){
   A[i].p = NIL;
   A[i].l = NIL;
   A[i].r = NIL;
  }
  for(i = 0; i < n; i++){
    scanf("%d%d%d",&id,&e,&c);
    
    A[e].p = id;
    A[c].p = id;
    A[id].l = e;
    A[id].r = c;
  
  }
  for(i = 0; i < n; i++){
    if(A[i].p == NIL){
      break;
    }
  }
  printf("Preorder\n");
  Pre(i);
  printf("\n");
   
  printf("Inorder\n");
  In(i);
  printf("\n");
   
  printf("Postorder\n");
  Post(i);
  printf("\n");

  return 0;
}

int Pre(int s)
{

 printf(" %d",s);
 
 if(s != NIL){
   if(A[s].l!=NIL)Pre(A[s].l);
   
    if(A[s].r!=NIL)Pre(A[s].r);
 }
}

int In(int s){
  
  if(s != NIL){
   
    if(A[s].l != NIL){
      
      In(A[s].l);
    }
    printf(" %d",s);
     
    if(T[s].r != NIL){
      In(A[s].r);
    }
  }
}
 
int Post(int s){
  
  if(s != NIL){
    
    if(A[s].l!=NIL)Post(T[s].l);
   
    if(A[s].r!=NIL)Post(A[s].r);
    
  }

  printf(" %d",s);
}