#include<stdio.h>
#include<stdlib.h>
typedef struct{
  int parent;
  int id;
  int left;
  int right;
    }Node;
int Postorder(Node *A,int key){
  if(key != -1){
    Postorder(A,A[key].left);
    Postorder(A,A[key].right);
    printf(" %d",A[key].id);
  }
}
int Inorder(Node *A,int key){
  if(key !=-1){
    Inorder(A,A[key].left);
    printf(" %d",A[key].id);
    Inorder(A,A[key].right);
  }
}
int Preorder(Node *A,int key){
  if(key !=-1){
    printf(" %d",A[key].id);
    Preorder(A,A[key].left);
    Preorder(A,A[key].right);
  }
}
int main(){
  int n,l,r,id,root;
  int i;
  Node *A;
  scanf("%d",&n);
  A=(Node*)malloc(sizeof(Node)*n);
  for(i=0;i<n;i++){//parentの初期化(-1)
    A[i].parent=-1;
  }
  for(i=0;i<n;i++){//入力
    scanf("%d%d%d",&id,&l,&r);
    A[id].id=id;
    A[id].left=l;
    A[id].right=r;
    A[r].parent=id;
    A[l].parent=id;
  }
  for(i=0;i<n;i++){
    if(A[i].parent==-1)root=A[i].id;
  }
  printf("Preorder\n");
  Preorder(A,root);
  printf("\nInorder\n");
  Inorder(A,root);
  printf("\nPostorder\n");
  Postorder(A,root);
  printf("\n");
  
  return 0; 
}

