#include<stdio.h>
#define MAX 100000
#define NIL -1
 
typedef struct {
  int par;
  int left;
  int right;
}Node;
 
Node T[MAX];
int n,A=0,D[MAX];
 
 int rec(int n){
  int m=0;
  while(1){
    n=T[n].par;
    if(n==NIL) break;
    m++;
  }
  return m;
}
 
 
void print(int n){
  int i,c;
  printf("node %d: parent = %d, depth = %d, ",n,T[n].par,D[n]);
 
  if(T[n].par==NIL) printf("root, ");
  else if(T[n].left==NIL) printf("leaf, ");
  else printf("internal node, ");
 
  printf("[");
  for(i=0,c=T[n].left;c!=NIL;i++,c=T[c].right){
    if(i) printf(", ");
    printf("%d",c);
  }
  printf("]\n");
}

int main(){
  int i,a,b,j,c,l;
   
  scanf("%d",&n);
   
  for(i=0;i<n;i++){
    T[i].par=NIL;
    T[i].left=NIL;
    T[i].right=NIL;
  }
  
  for(i=0;i<n;i++){
    scanf("%d%d",&a,&b);
    for(j=0;j<b;j++){
      scanf("%d",&c);
      if(j==0) T[a].left=c;
      else T[l].right=c;
      T[c].par=a;
      l=c;
    }
  }
   
  for(i=0;i<n;i++){
    D[i]=rec(i);
    if(D[i]>A){
      A=D[i];
    }
  }  
  for(i=0;i<n;i++){
    print(i);
  }
  return 0;
}