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

struct node
{ int parent;
  int left;
  int right; };

struct node Tree[10000];
int n;

void preorder(int);
void inorder(int);
void postorder(int);

int main()
{
  int i,root;
  scanf("%d",&n);
  
  for(i=0;i<n;i++)
    Tree[i].parent=NIL;
  int num,l,r;
  for(i=0;i<n;i++)
    {scanf("%d %d %d",&num,&l,&r);
      Tree[num].left=l;
      Tree[num].right=r;
      if(l!=NIL)Tree[l].parent=num;
      if(r!=NIL)Tree[r].parent=num;
    }
  for(i=0;i<n;i++)
    {if(Tree[i].parent==NIL)
	root=i;}

  printf("Preorder\n");
  preorder(root);
  printf("\n");
  printf("Inorder\n");
  inorder(root);
  printf("\n");
  printf("Postorder\n");
  postorder(root);
  printf("\n");
  
  return 0;
}

void preorder(int s)
{
  if(s==NIL)return;
  printf(" %d",s);
  preorder(Tree[s].left);
  preorder(Tree[s].right);
}

void inorder(int s)
{
if(s==NIL)return;
  inorder(Tree[s].left);
  printf(" %d",s);
  inorder(Tree[s].right);
}

void postorder(int s)
{
if(s==NIL)return;
  postorder(Tree[s].left);
  postorder(Tree[s].right);
  printf(" %d",s);
}

