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

struct Node { int p, l, r; };
struct Node T [MAX];
int n;

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

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

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

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