#include<stdio.h>
#include<stdlib.h>

typedef struct{
  int parent;
  int left;
  int right;
}node;

int degree(node*,int,int);
int depth(node*,int,int);
int height(node*,int,int);
void print_type(node*,int);

void preOrder(node*,int);
void inOrder(node*,int);
void postOrder(node*,int);
#define NIL -1

int main(){
  int n,id,frag,count;
  int i,j,k;
  int dep;

  node T[25];
  scanf("%d",&n);
  
  for(i=0;i<n;i++){
    T[i].parent=-1;
    T[i].left=-1;
    T[i].right=-1;
  }

  for(i=0;i<n;i++){
    scanf("%d",&id);
    scanf("%d%d",&T[id].left,&T[id].right);
  }
  for(i=0;i<n;i++){
    for(j=0;j<n;j++){
      if(i==T[j].left){
	T[i].parent=j;
      }
      if(i==T[j].right){
	T[i].parent=j;
      }
    }
  }
  

  printf("Preorder\n");
  preOrder(T,0);
  printf("\nInorder\n");
  inOrder(T,0);
  printf("\nPostorder\n");
  postOrder(T,0);
  printf("\n");
  return 0;
}

void preOrder(node *T,int u){
  if(u==NIL) return;
  printf("%d ",u);
  preOrder(T,T[u].left);
  preOrder(T,T[u].right);
}

void inOrder(node *T,int u){
  if(u==NIL) return;
  inOrder(T,T[u].left);
  printf("%d ",u);
  inOrder(T,T[u].right);
}

void postOrder(node *T,int u){
  if(u==NIL) return;
  postOrder(T,T[u].left);
  postOrder(T,T[u].right);
  printf("%d ",u);

}