#include <stdio.h>

struct node { int o, p, q; };
struct node x[10000];
int n;

void pre( int u) {
	if ( u == -1) {
		return ;
	}
	printf(" %d", u);
	pre( x[u].l);
	pre( x[u].r);
	
}

void in( int u) {
	if ( u == -1) {
		return ;
	}
	in( x[u].l);
	printf(" %d", u);
	in( x[u].r);
	
}

void post( int u) {
	if ( u == -1){
		return ;
	}
	post( x[u].l);
	post( x[u].r);
	printf(" %d", u);
	
}

int main() {
	int i, v, l, r, way;
	
	scanf("%d", &n);
	for ( i = 0; i < n; i++) {
		x[i].p = -1;
	}
	
	for ( i = 0; i < n; i++) {
		scanf("%d %d %d", &v, &l, &r);
		x[v].l = l;
		x[v].r = r;
		if ( l != -1) {
			x[l].p = v;
		}
		if ( r != -1) {
			x[r].p = v;
		}
	}
	
	for ( i = 0; i < n; i++) {
		if ( x[i].p == -1) {
			way = i;
		}
	}
	printf("Preorder");
	pre(way);
	printf("\n");
	puts("Inorder");
	in(way);
	printf("\n");
	printf("Postorder");
	pos(way);
	printf("\n");
	
	return 0;
}