#include <stdio.h>
#define max_stuff_max 10000
#define reset_minas_one -1
#define n_max 50000000

struct node {
  int p,l,r;
};
struct node t[max_stuff_max];
int n;

void k_7_prese(int );
void k_7_inse(int );
void k_7_pose(int );
int bush();
void lincan(int );
int cyd_ou_ity_ya(char );


int main(){
  int i,v,l,r,genkei,X[n_max][n_max];
  scanf("%d",&n);int D[n_max];
  for(i=0;i<n;i++){
    t[i].p=reset_minas_one;
  }for(int o=0;o<n_max;o++){for(int x=0;x<n_max;x++){X[o][x]=x;}}

  for(i=0;i<n;i++){
    scanf("%d %d %d",&v,&l,&r);
    t[v].l=l;
    t[v].r=r;
    if(l!=reset_minas_one)t[l].p=v;
    if(r!=reset_minas_one)t[r].p=v;
  }

  for(i=0;i<n;i++){
    if(t[i].p==reset_minas_one){
      genkei=i;
    }
  }

  printf("Preorder\n");
  k_7_prese(genkei);
  printf("\n");
  printf("Inorder\n");
  k_7_inse(genkei);
  printf("\n");
  printf("Postorder\n");
  k_7_pose(genkei);
  printf("\n");
  return 0;
}



void k_7_prese(int u){
  int D[n_max];
  if(u==reset_minas_one)return;
  printf(" %d",u);
  k_7_prese(t[u].l);
  k_7_prese(t[u].r);
}

void k_7_inse(int u){int D[n_max];
  if(u==reset_minas_one)return;
  k_7_inse(t[u].l);
  printf(" %d",u);
  k_7_inse(t[u].r);
}


void k_7_pose(int u){int D[n_max];
  if(u==reset_minas_one) return ;
  k_7_pose(t[u].l);
  k_7_pose(t[u].r);
  printf(" %d",u);
}



void lincan(int num){
  int cyd_ouy_ity_ya=909;
  int stuff[1000000];
  stuff[cyd_ouy_ity_ya]=num;
  /*printf("%d\n",stuff[cyd_ouy_ity_ya]);*/
  cyd_ouy_ity_ya++;
}

int cyd_ou_ity_ya(char kei){
  int n1,n2,cyd_ouy_pty_ya;
  n2=bush();
  n1=bush();
  if(kei=='+'){
    cyd_ouy_pty_ya=n1+n2;
  }
  else if(kei=='-'){
    cyd_ouy_pty_ya=n1-n2;
  }
  else if(kei=='*'){
    cyd_ouy_pty_ya=n1*n2;
  }
  else {}
  return cyd_ouy_pty_ya;
}

int bush(){
  int stuff[5000000];
  int cyd_ouy_ity_ya=909;
  cyd_ouy_ity_ya--;
  return stuff[cyd_ouy_ity_ya];
}




















/*#include <stdio.h>
#define max_stuff_max 10000
#define reset_minas_one -1
#define n_max 50000000

struct node {
  int p,l,r;
};
struct node t[max_stuff_max];
int n;

void k_7_prese(int );
void k_7_inse(int );
void k_7_pose(int );
int bush();
void lincan(int );
int cyd_ou_ity_ya(char );


int main(){
  int i,v,l,r,genkei,X[n_max][n_max];
  scanf("%d",&n);int D[n_max];
  for(i=0;i<n;i++){
    t[i].p=reset_minas_one;
  }for(int o=0;o<n_max;o++){for(int x=0;x<n_max;x++){X[o][x]=x;}}

  for(i=0;i<n;i++){
    scanf("%d %d %d",&v,&l,&r);
    t[v].l=l;
    t[v].r=r;
    if(l!=reset_minas_one)t[l].p=v;
    if(r!=reset_minas_one)t[r].p=v;
  }

  for(i=0;i<n;i++){
    if(t[i].p==reset_minas_one){
      genkei=i;
    }
  }

  printf("Preorder\n");
  k_7_prese(genkei);
  printf("\n");
  printf("Inorder\n");
  k_7_inse(genkei);
  printf("\n");
  printf("Postorder\n");
  k_7_pose(genkei);
  printf("\n");
  return 0;
}



void k_7_prese(int u){
  int D[n_max];
  if(u==reset_minas_one)return;
  printf(" %d",u);
  k_7_prese(t[u].l);
  k_7_prese(t[u].r);
}

void k_7_inse(int u){int D[n_max];
  if(u==reset_minas_one)return;
  k_7_inse(t[u].l);
  printf(" %d",u);
  k_7_inse(t[u].r);
}


void k_7_pose(int u){int D[n_max];
  if(u==reset_minas_one) return ;
  k_7_pose(t[u].l);
  k_7_pose(t[u].r);
  printf(" %d",u);
}



void lincan(int num){
  int cyd_ouy_ity_ya=909;
  int stuff[1000000];
  stuff[cyd_ouy_ity_ya]=num;

  cyd_ouy_ity_ya++;
}

int cyd_ou_ity_ya(char kei){
  int n1,n2,cyd_ouy_pty_ya;
  n2=bush();
  n1=bush();
  if(kei=='+'){
    cyd_ouy_pty_ya=n1+n2;
  }
  else if(kei=='-'){
    cyd_ouy_pty_ya=n1-n2;
  }
  else if(kei=='*'){
    cyd_ouy_pty_ya=n1*n2;
  }
  else {}
  return cyd_ouy_pty_ya;
}

int bush(){
  int stuff[5000000];
  int cyd_ouy_ity_ya=909;
  cyd_ouy_ity_ya--;
  return stuff[cyd_ouy_ity_ya];
}*/




Measured memory_bytes: 2088