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

struct Node{
  int parent;
  int L;
  int R;
};

struct Node T[MAX];

int getDepth(int K){
  int depth=0;
  
  for(depth = 0; T[K].parent != NIL; depth++){
    K=T[K].parent;
  }
  return depth; 
}

int main(void){
  int i,j,n;
  int num,deg,child,L=0;
  
  scanf("%d",&n);
  
  for(i=0; i<n; i++){
    T[i].parent=NIL;
    T[i].L=NIL;
    T[i].R=NIL;
  }
  
  for(i=0; i<n; i++){
    scanf("%d%d",&num,&deg);
    
    for(j=0; j<deg; j++){
      scanf("%d",&child);
      if(j==0) T[num].L = child;
      else T[L].R = child;
      L = child;
      T[child].parent = num;
    }
  }
  
  for(i=0; i<n; i++){
    printf("node %d: parent = %d, depth = %d",i,T[i].parent,getDepth(i));
    
    if(getDepth(i)==0){
      printf(", root, [");
    }
    else if(T[i].L==NIL){
      printf(", leaf, [");
    }
    else{
      printf(", internal node, [");
    }
    
    j = T[i].L;
    
    while(j!=NIL){
      printf("%d",j);
      j = T[j].R;
      if(j!=NIL){
	printf(", ");
      }
    }
    
    printf("]\n");
  }
  return 0;
}