#include <stdio.h>

typedef struct _node{
    int parent;
    int l,r;
}NODE;

void preorder(NODE node[],int id){
    printf(" %d",id);
    
    if(node[id].l!=-1)preorder(node,node[id].l);
    if(node[id].r!=-1)preorder(node,node[id].r);
    
    return;
}
void inorder(NODE node[],int id){
    if(node[id].l!=-1)inorder(node,node[id].l);
    printf(" %d",id);
    if(node[id].r!=-1)inorder(node,node[id].r);
    
    return;
}
void postorder(NODE node[],int id){
    if(node[id].l!=-1)postorder(node,node[id].l);
    if(node[id].r!=-1)postorder(node,node[id].r);
    
    printf(" %d",id);
    
    return;        
}

int main(void){
    int i;
    
    int n;
    scanf("%d\n",&n);
    
    NODE node[n];
    for(i=0;i<n;i++){
        node[i].parent=-1;
        node[i].l=-1;
        node[i].r=-1;
    }
    
    int id,l,r;
    for(i=0;i<n;i++){
        scanf("%d %d %d\n",&id,&l,&r);
        node[id].l=l;
        node[id].r=r;
        if(l!=-1)node[l].parent=id;
        if(r!=-1)node[r].parent=id;
    }
    
    int root;
    for(root=0;root<n;root++)if(node[root].parent==-1)break;

    printf("Preorder\n");
    preorder(node,root);
    printf("\nInorder\n");
    inorder(node,root);
    printf("\nPostorder\n");
    postorder(node,root);
    printf("\n");

    return 0;
}

