#include<stdio.h>


struct intree{
  int key;
  int id;  
  int k;
  int depth;
  int child[15];
  
};



int main(void){
  int n,i,j,k,l;
  struct intree list[100000];
  
  scanf("%d",&n);
  for(i=0;i<n;i++){
    list[i].key=-1;
    list[i].depth=0;
  }  
  
  for(i=0;i<n;i++){
    scanf("%d",&k);
    list[k].id=k;
    scanf("%d",&list[k].k);
    
    if(list[k].k!=0){
      for(j=0;j<list[k].k;j++){
	scanf("%d",&list[k].child[j]);
	list[list[k].child[j]].key=list[k].id;    
	list[list[k].child[j]].depth++;
      }
    }
    
 
  }
  
  for(i=0;i<n;i++){
    for(l=0;l<list[i].k;l++){  
      if(list[i].k!=0 &&list[i].depth>0){
       list[list[i].child[l]].depth+=list[i].depth;
     }
   }
  }


  
  for(i=0;i<n;i++){
    printf("node %d: ",list[i].id);
    printf("parent = %d, ",list[i].key);
    printf("depth = %d, ",list[i].depth);  
    if(list[i].key==-1) printf("root, ");
    else if(list[i].k==0) printf ("leaf, ");
    else printf("internal node, ");
    printf("[");       
    for(j=0;j<list[i].k;j++){
      if(j==list[i].k-1){
	printf("%d",list[i].child[j]);
	break;}
      printf("%d, ",list[i].child[j]);
    }
    printf("]\n");
  }
  
  return 0;
}