#include <stdio.h>

#define MAX 10005
#define NIL -1

typedef struct node{
  int p,l,r;
}Node;

Node T[MAX];
int N;

void prep(int);
void inp(int);
void postp(int);

int main(){
  int i,id,l,r,root;

  scanf("%d",&N);

  for(i=0;i<N;i++){
    T[i].p = NIL;
  }

  for(i=0;i<N;i++){
    scanf("%d %d %d",&id,&l,&r);
    T[id].l = l;
    T[id].r = r;
    if(l != NIL)T[l].p = id;
    if(r != NIL)T[r].p = id;
  }

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

  printf("Preorder\n");
  prep(root);
  printf("\nInorder\n");
  inp(root);
  printf("\nPostorder\n");
  postp(root);
  printf("\n");

  return 0;
}

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

  printf(" %d",n);
  prep(T[n].l);
  prep(T[n].r);
}

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

  inp(T[n].l);
  printf(" %d",n);
  inp(T[n].r);
}

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

  postp(T[n].l);
  postp(T[n].r);
  printf(" %d",n);
}

