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



int BubSort(int x[ ], int n); 

int main(){

  int N,n[200],d,i,w[200],h[200];
  while(1){
    scanf("%d",&N);
    if(N==0){
      break;
    };
    w[0]=0;
    h[0]=0;
    for(i=1;i<N;i++){
      scanf("%d %d",&n[i],&d);
      if(d==0){
	w[i]=w[n[i]]-1;
	h[i]=h[n[i]];
      }
      else if(d == 1){
	 w[i]=w[n[i]];
	 h[i]=h[n[i]]-1;
      }
      else if(d == 2){
	 w[i]=w[n[i]]+1;
	 h[i]=h[n[i]];
      }
      else if(d == 3){
	 w[i]=w[n[i]];
	 h[i]=h[n[i]]+1;
      }
    }
    for(i=0;i<N;i++){
      BubSort(w,N);
      BubSort(h,N);
    }
    printf("%d %d\n",w[N-1]-w[0]+1,h[N-1]-h[0]+1);
  }
  return 0;
}

int BubSort(int x[ ], int n)
{
  int i, j, temp;
  
  for (i = 0; i < n - 1; i++) {
    for (j = n - 1; j > i; j--) {
      if (x[j - 1] > x[j]) {  /* テ・ツ可催」ツ?ョティツヲツ?ァツエツ?」ツ?ョテヲツ鳴ケテ」ツ?古・ツ、ツァテ」ツ?催」ツ?凝」ツ?」テ」ツ?淌」ツつ?*/
	temp = x[j];        /* テ、ツコツ、テヲツ渉崚」ツ?凖」ツつ?*/
	x[j] = x[j - 1];
	x[j - 1]= temp;
      }
    }	
    
    
  }
  return 0;
}
      
    
    
      