#include <stdio.h>
#define NIL -1
typedef struct{
  int p;
  int l;
  int r;
  int id;
} Tree;
Tree T[30];

void init(int n){
  for(int i = 0; i < n; ++i){
    T[i].id = NIL;
    T[i].l = NIL;
    T[i].r = NIL;
    T[i].p = NIL;
  }
}
int getRoot(int n){
  for(int i = 0; i < n; ++i){
    if(T[i].p == NIL)
      return i;
  }

}
void printPreorder(int u){
  if(u == NIL)
    return;
  printf(" %d", T[u].id);
  printPreorder(T[u].l);
  printPreorder(T[u].r);
}
void printInorder(int u){
  if(u == NIL)
    return;
  printInorder(T[u].l);
  printf(" %d", T[u].id);
  printInorder(T[u].r);
}
void printPostorder(int u){
  if(u == NIL)
    return;
  printPostorder(T[u].l);
  printPostorder(T[u].r);
  printf(" %d", T[u].id);
}
int main(){
  int n, id, l, r;

  scanf("%d", &n);
  init(n);
  for(int i = 0; i < n; ++i){
    scanf("%d%d%d", &id, &l, &r);
    T[id].id = id;
    if(l != NIL){
      T[id].l = l;
      T[l].p = id;
    }
    if(r != NIL){
      T[id].r = r;
      T[r].p = id;
    }
  }
  int root = getRoot(n);
  printf("Preorder\n");
  printPreorder(root);
  printf("\nInorder\n");
  printInorder(root);
  printf("\nPostorder\n");
  printPostorder(root);
  printf("\n");
  return 0;
}

