#include <stdio.h>
#define N 100
#define NIL -1
void Pre(int t);
void In(int t);
void Post(int t);

typedef struct {
  int p, left, right;
}_A;
_A A[N];

int main(){
  int i, j;
  int n, id, h, d;
  scanf("%d", &n);
  for(i = 0; i < n; i++){
   A[i].p = NIL;
   A[i].left = NIL;
   A[i].right = NIL;
  }
	
  for(i = 0; i < n; i++){
    scanf("%d %d %d", &id, &h, &d);
    A[h].p = id;
    A[d].p = id;
    A[id].left = h;
    A[id].right = d;
  }
	
  for(i = 0; i < n; i++){
    if(A[i].p == NIL) break; 
}
  printf("Preorder\n");
  Pre(i);
  printf("\n");
  printf("Inorder\n");
  In(i);
  printf("\n");
  printf("Postorder\n");
  Post(i);
  printf("\n");
	
return 0; 
}

void Pre(int t){
  printf(" %d",t);
  if(t != NIL){
    if(A[t].left != NIL) Pre(A[t].left);
    if(A[t].right != NIL) Pre(A[t].right);
  }
}

void In(int t){
  if(t != NIL){
    if(A[t].left != NIL){
      In(A[t].left);
    }
    printf(" %d",t);
    if(A[t].right != NIL){
      In(A[t].right);
} 
}
}

void Post(int t){
  if(t != NIL){
    if(A[t].left != NIL)Post(A[t].left);
    if(A[t].right != NIL)Post(A[t].right);
  }
  printf(" %d",t);
}