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

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

struct Node  T[MAX];
int n,D[MAX];

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

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

void post(int h){
  if(h==NIL) return;
  post(T[h].l);
  post(T[h].r);
  printf(" %d",h);
}

int main(){

  int n,i,j,num,node,nodenum,c,left,right,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",&node,&left,&right);
    T[node].l = left;
    T[node].r = right;
    if(left!=NIL) T[left].p = node;
    if(right!=NIL) T[right].p = node;

    }

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

printf("Preorder\n");
pre(root);
printf("\n");
printf("Inorder\n");
in(root);
printf("\n");
printf("Postorder\n");
post(root);
printf("\n");

return 0;
}
