#include <stdio.h>

int main(void)
{
	int N;
	int i;
	int x[200], y[200];
	int n, d;
	int x_max, x_min;
	int y_max, y_min;
	
	while (1){
		scanf("%d", &N);
		if (N == 0){
			break;
		}
		
		x[0] = 0;
		y[0] = 0;
		
		for (i = 1; i < N; i++){
			scanf("%d%d", &n, &d);
			
		    x[i] = x[n];
		    y[i] = y[n];
			switch (d){
			  case 0:
			    x[i]--;
				break;
			
			  case 1:
			    y[i]++;
				break;

			  case 2:
			    x[i]++;
				break;
			
			  case 3:
			    y[i]--;
				break;
			}
		}

//		for (i = 0; i < N; i++){
//			printf("(%d=%d,%d)", i, x[i], y[i]);
//		}
		x_min = x_max = y_min = y_max = 0;
		for (i = 0; i < N; i++){
			if (x_min > x[i]){
				x_min = x[i];
			}
			if (x_max < x[i]){
				x_max = x[i];
			}
			if (y_min > y[i]){
				y_min = y[i];
			}
			if (y_max < y[i]){
				y_max = y[i];
			}
		}
		
		printf("%d %d\n", x_max - x_min + 1, y_max - y_min + 1);
	}
	return (0);
}