#include <stdio.h>
#define MAX 10000
#define NIL -1


typedef struct{
  int p;
  int r;
  int l;
}info;

info tree[MAX];
int n;


void prewalk(int a){
  if(a==NIL)return;
  else{
    printf(" %d",a);
    prewalk(tree[a].l);
    prewalk(tree[a].r);
  }
}

void inowalk(int a){
  if(a==NIL)return ;

  inowalk(tree[a].l);
  printf(" %d",a);
  inowalk(tree[a].r);
  }


void postwalk(int a){
  if(a==NIL)return;

  postwalk(tree[a].l);
  postwalk(tree[a].r);
  printf(" %d",a);
}

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

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

    if(l!=NIL)tree[l].p = v;
    if(r!=NIL)tree[r].p = v;
  }

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

  printf("Preorder\n");
  prewalk(root);
  printf("\n");
  printf("Inorder\n");
  inowalk(root);
  printf("\n");
  printf("Postorder\n");
  postwalk(root);
  printf("\n");
  return 0;
}


