#include<stdio.h>
#define N 10000
#define M -1

struct Node {int i,j,k;};
struct Node T[N];
int a;

void sum(int b)
{
    if(b==M)return;
    printf(" %d",b);
    sum(T[b].j);
    sum(T[b].k);
}
void num(int c)
{
    if(c==M)return;
    num(T[c].j);
    printf(" %d",c);
    num(T[c].k);
}

void tum(int d)
{
    if(d==M)return;
    tum(T[d].j);
    tum(T[d].k);
    printf(" %d",d);
}

int main()
{
    int i,v,l,r,xu;
    scanf("%d",&a);
    for(i=0;i<a;i++)
    {
        T[i].i=M;
        
    }
    for(i=0;i<a;i++)
    {
        scanf("%d %d %d",&v,&l,&r);
        T[v].j=l;
        T[v].k=r;
        if(l!=M)T[l].i=v;
        if(r!=M)T[r].i=v;
    }
    for(i=0;i<a;i++)if(T[i].i==M)xu=i;
    
    printf("Preorder\n");
    sum(xu);
    printf("\n");
    printf("Inorder\n");
    num(xu);
    printf("\n");
    printf("Postorder\n");
    tum(xu);
    printf("\n");
    
    return 0;
}

