#include <stdio.h>

struct node{
    int pnod;
    int l;
    int r;
};

struct node Node[25];

void preParse(int u){
    if(u == -1) return;

    printf(" %d", u);
    preParse(Node[u].l);
    preParse(Node[u].r);
}

void inParse(int u){
    if(u == -1) return;

    inParse(Node[u].l);
    printf(" %d", u);
    inParse(Node[u].r);
}

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


int main(){
    int i, nm, n, l, r, init;

    for(i = 0; i < 26; i++){
        Node[i].l = Node[i].l = Node[i].pnod = -1;
    }

    scanf("%d", &nm);

    for(i = 0; i < nm; i++){
        scanf("%d", &n);
        scanf("%d%d", &Node[n].l, &Node[n].r);
        Node[Node[n].l].pnod = n;
        Node[Node[n].r].pnod = n;
    }

    for(i = 0; i < nm; i++){
        if(Node[i].pnod == -1){
            init = i;
            break;
        }
    }

    printf("Preorder\n");
    preParse(init);
    printf("\nInorder\n");
    inParse(init);
    printf("\nPostorder\n");
    postParse(init);
    printf("\n");

    return 0;
}

