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

struct Node{int p,l,r;};
struct Node T[MAX];

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


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

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

int main(){
  int i,n,e,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", &e, &l, &r);
        T[e].l = l;
        T[e].r = r;
        if (l != NIL)T[l].p = e;
        if (r != NIL)T[r].p = e;
  }

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


  printf("Preorder\n");
  Preorder(root);
  printf("\nInorder\n");
  Inorder(root);
  printf("\nPostorder\n");
  Postorder(root);
  printf("\n");
  return 0;

}

