#include <stdio.h>

struct Node{
  int key;
  int pa,le,ri;
  int s,deg,dep,h;
  int type; //0:root 1:internal node 2:leaf
};
struct Node node[30];
int find(int a);
int height(int a);
int main(){
  int i,j,n;
  int ns,nh;
  int root,count;
  for(i=0;i<30;i++) node[i].pa=-1;
  scanf("%d",&n);
  for(i=0;i<n;i++){
    scanf("%d %d %d",&node[i].key,&node[i].le,&node[i].ri);
    //keyでpaを探す
    for(j=0;j<i;j++){
      if(node[i].key==node[j].le||node[i].key==node[j].ri){
        node[i].pa=node[j].key;   break;
      }
      if(node[i].le==node[j].key||node[i].ri==node[j].key){
        node[j].pa=node[i].key;   break;
      }
    }
  }
  //type
  for(i=0;i<n;i++){
    if(node[i].pa==-1){
      root=i; node[i].type=0;
    }else if(node[i].le==-1&&node[i].ri==-1)  node[i].type=2;
    else  node[i].type=1;
  }
  //sibling
  for(i=0;i<n;i++){
    if(node[i].pa==-1)  node[i].s=-1;
    else{
      ns=find(node[i].pa);
      if(node[ns].le==node[i].key)  node[i].s=node[ns].ri;
      else if(node[ns].ri==node[i].key) node[i].s=node[ns].le;
    }
  }
  //degree
  for(i=0;i<n;i++){
    if(node[i].le==-1&&node[i].ri==-1)  node[i].deg=0;
    else if(node[i].le==-1||node[i].ri==-1)   node[i].deg=1;
    else  node[i].deg=2;
  }
  //depth
  for(i=0;i<n;i++){
    count=0;  nh=i;
    while(node[nh].type!=0){
      count++;
      nh=find(node[i].pa);
    }
    node[i].dep=count;
  }
  //height
  for(i=0;i<n;i++){
    node[i].h=height(i);
  }
  //print
  for(i=0;i<n;i++){
    printf("node %d: parent = %d , sibling = %d , degree = %d, depth = %d, height = %d, ",node[i].key,node[i].pa,node[i].s,node[i].deg,node[i].dep,node[i].h);
    if(node[i].type==0) printf("root\n");
    else if(node[i].type==1)  printf("internal node\n");
    else  printf("leaf\n");
  }
  return 0;
}

int find(int a){
  int ans,i;
  for(i=0;i<30;i++){
    if(node[i].key==a){
      ans=i;  break;
    }
  }
  return ans;
}

int height(int a){
  if(node[a].type==2) return 0;
  else{
    if(height(find(node[a].le))<height(find(node[a].ri))) return 1+height(find(node[a].ri));
    else  return 1+height(find(node[a].le));
  }
}

