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

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

struct Node T[MAX];
int n;

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

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

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

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

  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;
}

