#include<stdio.h>

#define N 100000
#define NIL -1

struct Node{
  int parent;
  int right;
  int left;
};

void preorder (int);

void inorder (int);

void postorder(int);


struct Node T[N];

int main(){
  int v,l,r;
  int num,i,j;
  int root;
  

  
  scanf("%d",&num);

  for(i=0;i<num;i++) T[i].parent = NIL;

  for(i=0;i<num;i++){
    scanf("%d%d%d",&v,&l,&r);
    T[v].left = l;
    T[v].right = r;
    if(l != NIL) T[l].parent = v;
    if(r != NIL) T[r].parent = v;
  }

  for(i=0;i<num;i++) if(T[i].parent == NIL) root = i;

  printf("Preorder\n");
  preorder(root);
  printf("\n");
  printf("Inorder\n");
  
  inorder(root);
  printf("\n");
  printf("Postorder\n");
  postorder(root);
  printf("\n");
  
  return 0;
}

void preorder(int n){


  
  if (n == NIL) return;

  printf(" %d",n);

  preorder(T[n].left);

  preorder(T[n].right);
  
}

void inorder(int n){


  if(n == NIL) return;



  inorder(T[n].left);
  printf(" %d",n);
  inorder(T[n].right);
  
}

void postorder(int n){
  if(n == NIL) return;

  postorder(T[n].left);
  postorder(T[n].right);
  printf(" %d",n);

}


