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

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

 struct Node N[10000];

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

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

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


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

       for(i=0;i<n;i++)if(N[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;
       }




