#include<stdio.h>
#define MAX 100005
#define NIL -1 
struct Node{ int p, l, r;};
struct Node T[MAX];
 
void inorder(int u){
    if(u != NIL) {  
    if(T[u].l != NIL) inorder(T[u].l); 
printf(" %d",T[u].l);    
if(T[u].r != NIL) inorder(T[u].r);  
    }
}
void preorder(int u){
    if(u != NIL) {  
    printf(" %d",T[u].l);   
if(T[u].l != NIL) preorder(T[u].l);
if(T[u].r != NIL)
preorder(T[u].l); 
 
    }
}
 
void postorder(int u){
    if(u != NIL){
        if(T[u].l != NIL) postorder(T[u].l);
        if(T[u].l != NIL)
        postorder(T[u].r);
        printf(" %d",T[u].l);
    }
}
 
int main(){
    int i, v,n;     
    scanf("%d", &n);
    for ( i = 0; i < n; i++ ) {
        T[i].p = T[i].l = T[i].r = NIL; 
        } 
        for ( i = 0; i < n; i++ ){ 
            scanf("%d",&v);
            scanf("%d %d",&T[v].l,&T[v].r);    
            T[T[v].l].p = v;
            T[T[v].r].p = v; 
            } 
            
            
            printf("Preorder\n");
            for ( i = 0; i < n; i++ ){
           preorder(i);
            }
            printf("\nInorder\n");
            for(i=0; i<n; i++){
                inorder(i);
            }
            printf("\nPostorder\n");
            for(i=0; i<n; i++){
           postorder(i);
            }
            
            return 0;
            
}