#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define MAX 50
#define NIL -1

struct Node {
	int pare;
	int left;
	int right;
};

struct Node T[MAX];

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

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

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

int main() {
	int i, n, p, l, r, root;
	scanf("%d",&n);
	for (i = 0; i < n; i++) {
		T[i].pare = NIL;
	}
	for (i = 0; i < n; i++) {
		scanf("%d %d %d",&p, &l, &r );
		T[p].left = l;
		T[p].right = r;
		
		if (l != NIL) {
			T[l].pare = p;
		}
		if (r != NIL) {
			T[r].pare = p;
		}
	} 
	
	for (i = 0; i < n; i++) {
		if (T[i].pare == NIL) {
			root = i;
		}
	}
	
	printf("Preorder\n");
	preParse(root);
	putchar('\n');
	
	printf("Inorder\n");
	inParse(root);
	putchar('\n');
	
	printf("Postorder\n");
	postParse(root);
	putchar('\n');
    
    return 0;
}
