#include<stdio.h>

#define NIL -1

typedef struct{int parent,left,right;}Node;
Node T[100];

void pre(int x){
	if(x==NIL)return;

	printf(" %d",x);
	pre(T[x].left);
	pre(T[x].right);
}
void in(int x){
	if(x==NIL)return;

	in(T[x].left);
	printf(" %d",x);
	in(T[x].right);
}
void post(int x){
	if(x==NIL)return;

	post(T[x].left);
	post(T[x].right);
	printf(" %d",x);
}

int main(){
	int i,n,id,l,r;	scanf("%d",&n);
	for(i=0;i<n;i++)T[i].parent=T[i].left=T[i].right=NIL;

	for(i=0;i<n;i++){
		scanf("%d%d%d",&id,&l,&r);
		if(l!=-1){
			T[id].left=l;
			T[l].parent=id;
		}
		if(r!=-1){
			T[id].right=r;
			T[r].parent=id;
		}
	}

	int root;
	for(i=0;i<n;i++){
		if(T[i].parent==NIL){
			root=i;
			break;
		}
	}
	printf("Preorder\n");
	pre(root);
	printf("\nInorder\n");
	in(root);
	printf("\nPostorder\n");
	post(root);
	printf("\n");

	return 0;
}

