#include<stdio.h>
#include<stdlib.h>
typedef struct{
  int parent;
  int l,r;    // child
}node;
void Preorder(int);
void Inorder(int);
void Postorder(int);
node *T;
int main(){
  int n, x, i;
  scanf("%d",&n);
  T = (node *)malloc(sizeof(node) * n);
  for(i=0; i<n; i++) T[i].parent = -1;
  for(i=0; i<n; i++){
    scanf("%d",&x);
    scanf("%d%d",&T[x].l,&T[x].r);
    T[T[x].l].parent = x;
    T[T[x].r].parent = x;
  }
  printf("Preorder\n");
  Preorder(0);
  printf("\nInorder\n");
  Inorder(0);
  printf("\nPostorder\n");
  Postorder(0);
  printf("\n");
  free(T);
  return 0;
}

void Preorder(int x){
  printf("%d ",x);
  if(T[x].l != -1) Preorder(T[x].l);
  if(T[x].r != -1) Preorder(T[x].r);
}

void Inorder(int x){
  if(T[x].l != -1) Preorder(T[x].l);
  printf("%d ",x);
  if(T[x].r != -1) Preorder(T[x].r);
  
}

void Postorder(int x){
  if(T[x].l != -1) Preorder(T[x].l);
  if(T[x].r != -1) Preorder(T[x].r);
  printf("%d ",x);
}