#include<stdio.h>
#define MAX 26

struct Node { int v, a, b; };
struct Node G[MAX];
int N,i,l,r,p;
char S[4][100]={"Preorder","Inorder","Postorder"};
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;
}
 
 
 
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;
}

