#include<stdio.h>
#include<stdlib.h>
#define MAX 25
#define NIL -1
#define N 2
typedef struct {
    int parent,left,right;
}node;
node t[MAX];
int n;
void preparse(int u){
  if(u==NIL)return;
  printf(" %d",u);
  preparse(t[u].left);
  preparse(t[u].right);
}
void inparse(int u){
  if(u==NIL)return;
  inparse(t[u].left);
  printf(" %d",u);
  inparse(t[u].right);
}
void postparse(int u){
  if(u==NIL)return;
  postparse(t[u].left);
  postparse(t[u].right);
  printf(" %d",u);
}

int main(){                                                                                  
  int i,id,k,*c,j,df;                                                                   
  scanf("%d",&n);                                                                      
  for(i=0;i<n;i++) t[i].parent=t[i].left=t[i].right=NIL;                                     
  for(i=0;i<n;i++){                                                                          
    scanf("%d",&id);                                                                    
    c=(int*)malloc(sizeof(int)*N);                                                           
    for(j=0;j<N;j++)scanf("%d",&c[j]);                                                                                                                       
    for(j=0;j<N;j++)t[c[j]].parent=id;
    t[id].right=c[1];
    t[id].left=c[0];                         
  } 
  for(i=0;i<n;i++)if(t[i].parent==NIL)df=i;
  printf("Preorder\n");
  preparse(df);
  printf("\nInorder\n");
  inparse(df);
  printf("\nPostorder\n");
  postparse(df);
  printf("\n");
  return 0;                                                                                  
}     
