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

typedef struct{
  int p,l,r;
    }Node;
Node T[MAX];

int depht(int);
void print_degree(int);

int main(){

  int n,i,j,node,degree,child,left;

  scanf("%d",&n);
  for(i = 0; i < n; i++){
    T[i].p = NIL;
    T[i].l = NIL;
    T[i].r = NIL;
  }
  for(i = 0; i < n; i++){
    scanf("%d%d",&node,&degree);
    for(j = 0; j < degree; j++){
      scanf("%d",&child);
      T[child].p = node;
      if(j == 0)
        T[node].l = child;
      else
        T[left].r = child;
      left = child;
    }
  }

  for(i = 0; i < n; i++){
    printf("node %d: parent = %d, depth = %d, ",i,T[i].p,depth(i)\
);
    if(T[i].p == NIL)
      printf("root, [");
    else if(T[i].l == NIL)
      printf("leaf, [");
    else
      printf("internal node, [");
    print_degree(T[i].l);
    printf("]\n");
  }

  return 0;
}

int depth(int node){

  int count=0;

  while(T[node].p != NIL){
    count++;
    node = T[node].p;
  }
  return count;
}

void print_degree(int i){

  if(i != NIL){
    if(T[i].r == NIL)
      printf("%d",i);
    else printf("%d, ",i);
  print_degree(T[i].r);
  }
}