#include<stdio.h>
#define N 25

typedef struct node{
	int L_id;
	int R_id;
	int P_id;
}node;

node a[N];

void preorder(int root){
	
	printf(" %d",root);
	
	if(a[root].L_id!=-1)
		preorder(a[root].L_id);
	
	if(a[root].R_id!=-1)
		preorder(a[root].R_id);

	return;
	
}

void inorder(int root){
	
	if(a[root].L_id!=-1)
		inorder(a[root].L_id);
	
	printf(" %d",root);
	
	if(a[root].R_id!=-1)
		inorder(a[root].R_id);

	return;
	
}

void postorder(int root){
	
	if(a[root].L_id!=-1)
		postorder(a[root].L_id);
	
	if(a[root].R_id!=-1)
		postorder(a[root].R_id);
		
	printf(" %d",root);

	return;
	
}

void print(int root){

	printf("Preorder\n");
	preorder(root);
	printf("\n");
	
	printf("Inorder\n");
	inorder(root);
	printf("\n");
	
	printf("Postorder\n");
	postorder(root);
	printf("\n");
	
	return;
	
}


int main(){
	int n,x,i;
	int root;
	
	scanf("%d",&n);
	
	for(i=0;i<n;i++)
		a[i].P_id=-1;
	
	for(i=0;i<n;i++){
		scanf("%d",&x);
		scanf("%d %d",&a[x].L_id,&a[x].R_id);
		if(a[x].L_id!=-1)
			a[a[x].L_id].P_id=x;
		if(a[x].R_id!=-1)
			a[a[x].R_id].P_id=x;
	}
	
	for(i=0;i<n;i++){
		if(a[i].P_id==-1){
			root=i;
			break;
		}
	}
	
	print(root);
	
	return 0;
	
}
