#include <stdio.h>

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

struct Node T[100005];
int n;

void pre(int u){
  if(u==-1) return;
  printf(" %d",u);
  pre(T[u].l);
  pre(T[u].r);

}

void in(int u){
  if(u==-1) return;
  in(T[u].l);
  printf(" %d",u);
  in(T[u].r);

}

void post(int u){
  if(u==-1) return;
  post(T[u].l);
  post(T[u].r);
  printf(" %d",u);

}

int main(){
  int i,j,a,l,r,root;
  scanf("%d",&n);
  for(i=0;i<n;i++) T[i].p=-1;

  for(i=0;i<n;i++){
    scanf("%d%d%d",&a,&l,&r);
    T[a].l=l;
    T[a].r=r;
    if(l!=-1)T[l].p=a;
    if(r!=-1)T[r].p=a;
    
  }
  for(i=0;i<n;i++){
    if(T[i].p==-1) root=i;
  }

  printf("Preorder\n");
  pre(root);
  printf("\n");
  printf("Inorder\n");
  in(root);
  printf("\n");
  printf("Postorder\n");
  post(root);
  printf("\n");

  return 0;
}

