#include<stdio.h>
#define NTL -1
#define M 25
typedef struct tree{
  int p;
  int l;
  int r;
}tree;
void pre(int,tree *);
void in(int,tree *);
void post(int,tree *);
int main(){
  int n,i,now,rt;
  /*scan n*/
  scanf("%d",&n);
  tree t[n];
  /*NTL*/
  for(i=0;i<n;i++){
    t[i].p=NTL;
  }
  /*scan tree*/
  for(i=0;i<n;i++){
    scanf("%d",&now);
    scanf("%d %d",&t[now].l,&t[now].r);
    if(t[now].l!=NTL) t[t[now].l].p=now;
    if(t[now].r!=NTL) t[t[now].r].p=now;
  }
  for(i=0;i<n;i++){
    if(t[i].p == NTL) rt =i;
  }
  printf("Preorder\n");
  pre(rt,t);
  printf("\n");
  printf("Inorder\n");
  in(rt,t);
  printf("\n");
  printf("Postorder\n");
  post(rt,t);
  printf("\n");
  return 0;
}

void pre(int now,tree *t){
  if(now == NTL) return;
  printf(" %d",now);
  pre(t[now].l,t);
  pre(t[now].r,t);
}
void in(int now,tree *t){
  if(now == NTL) return;
  in(t[now].l,t);
  printf(" %d",now);
  in(t[now].r,t);
}
void post(int now,tree *t){
  if(now == NTL) return;
  post(t[now].l,t);
  post(t[now].r,t);
  printf(" %d",now);
}
