#include <stdio.h>
#define MAX 10000
#define nil -1

struct node{
	int p,l,r;
};

struct node T[MAX];
int n;

void preparse(int u){
	if(u==nil){
		return;
	}
	printf(" %d",u);
	preparse(T[u].l);
	preparse(T[u].r);
}

void inparse(int u){
	if(u==nil){
		return;
	}
	inparse(T[u].l);
	printf(" %d",u);
	inparse(T[u].r);
}

void postparse(int u){
	if(u==nil){
		return;
	}
	postparse(T[u].l);
	postparse(T[u].r);
	printf(" %d",u);
}

int main(void){
	int i,v,l,r,root;
	scanf("%d",&n);
	for(i=0;i<n;i++){
		T[i].p=nil;
	}
	for(i=0;i<n;i++){
		scanf("%d %d %d",&v,&l,&r);
	T[v].l=l;
	T[v].r=r;
		if(l!=nil){
			T[l].p=v;
		}
		if(r!=nil){
			T[r].p=v;
		}
	}
	for(i=0;i<n;i++){
		if(T[i].p==nil){
			root=i;
		}
	}
	
	printf("Preorder\n");
	preparse(root);
	printf("\n");
	printf("Inorder\n");
	inparse(root);
	printf("\n");
	printf("Postorder\n");
	postparse(root);
	printf("\n");
	
	return 0;
	
}
