#include<stdio.h>
#define N 26

void pre(int);
void ino(int);
void pos(int);

struct Node{
 int v, a, b; 
};

struct Node G[N];

int n, i, l, r, p;

char S[4][100]={"Preorder","Inorder","Postorder"};

int main(){
    void (*funcs[])(int)={pre,ino,pos};
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d%d%d",&p,&l,&r);
        G[l].v=G[r].v=1;
        G[p].a=l;
        G[p].b=r;
    }
    for(i=0;i<n;i++)if(!G[i].v)p=i;
    for(i=0;i<3;i++){
        puts(S[i]);
        (*(funcs[i]))(p);
        puts("");
    }
    return 0;
}

void pre(int n){
    if(n==-1)return;
    printf(" %d",n);
    pre(G[n].a);
    pre(G[n].b);
    return;
}

void ino(int n){
    if(n==-1)return;
    ino(G[n].a);
    printf(" %d",n);
    ino(G[n].b);
    return;
}

void pos(int n){
    if(n==-1)return;
    pos(G[n].a);
    pos(G[n].b);
    printf(" %d",n);
    return;
}