#include <stdio.h>
#define MAX 30
#define NIL -1

typedef struct{ 
	int p, lc, rc;
}node;

node T[MAX];
int i,n;

void preOrder(int u){
	if (u == NIL)
		return;
	printf(" %d", u);
	preOrder(T[u].lc);
	preOrder(T[u].rc);
}

void inOrder(int u){
	if (u == NIL)
		return;
	inOrder(T[u].lc);
	printf(" %d", u);
	inOrder(T[u].rc);
}

void postOrder(int u){
	if (u == NIL)
		return;
	postOrder(T[u].lc);
	postOrder(T[u].rc);
	printf(" %d", u);
}


int main(void) {
	int id, l, r, root, leftmost;
	
	scanf("%d", &n);
	//initialize
	for (i=0; i<n; i++){
		T[i].p = T[i].lc = T[i].rc = NIL;
	}
	
	for(i=0; i<n; i++){
		scanf("%d", &id);
		scanf("%d %d", &l, &r);
		T[id].lc = l;
		T[id].rc = r;
		T[l].p = T[r].p = id;
	}
	
	printf("Preorder\n");
	for(i=0; i<n; i++){
		if(T[i].p == NIL)
			root = i;
	}
	preOrder(root);
	
	printf("\nInorder\n");
	inOrder(root);
	
	printf("\nPostorder\n");
	postOrder(root);
	printf("\n");
	
	return 0;
}
