	#include <stdio.h>
	#define MAX 10000

	void preParse(int );
	void inParse(int );
	void postParse(int);

	struct Node{
		int p;
		int l;
		int r;
	};
	struct Node T[MAX];
	int num;
	int main(){
		int i,v,l,r,root;
		scanf("%d",&num);
	for(i=0;i<num;i++){
		T[i].p=-1;
	}

	for(i=0;i<num;i++){
		scanf("%d %d %d",&v,&l,&r);
		T[v].l=l;
		T[v].r=r;
		if(l != -1 ) T[l].p = v;
		if(r != -1) T[r].p = v;
	}
		for(i=0;i<num;i++) if(T[i].p == -1) 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;
	}
	void preParse(int n){
		if(n == -1) return;
		printf(" %d",n);
		preParse(T[n].l);
		preParse(T[n].r);
	}

	void inParse(int n){
		if (n == -1) return ;
		inParse(T[n].l);
		printf(" %d",n);
		inParse(T[n].r);
	}

	void postParse(int n){
		if (n == -1) return ;
		postParse(T[n].l);
		postParse(T[n].r);
		printf(" %d",n);
	}