#include <stdio.h>

#define NIL -1

struct Node{
  int p;
  int l;
  int r;
};

struct Node t[100005];
int n;

void pre(int u){
  if(u==NIL)return;
  printf(" %d",u);
  pre(t[u].l);
  pre(t[u].r);
}

void in(int u){
  if(u==NIL)return;
  in(t[u].l);
  printf(" %d",u);
  in(t[u].r);
}

void po(int u){
  if(u==NIL)return;
  po(t[u].l);
  po(t[u].r);
  printf(" %d",u);
}

int main(){

  int i,n,v,r;
  scanf("%d",&n);

  for(i=0;i<n;i++)t[i].p=t[i].l=t[i].r = NIL;
    
  for(i=0;i<n;i++){
    scanf("%d",&v);
    scanf("%d",&t[v].l);
    scanf("%d",&t[v].r);
    t[t[v].l].p = t[t[v].r].p = v;

  }
  for(i=0;i<n;i++)if(t[i].p==NIL)break;

  printf("Preorder\n");
  pre(i);
  printf("\nInorder\n");
  in(i);
  printf("\nPostorder\n");
  po(i);
  printf("\n");
 
  return 0;
}

