#include<stdio.h>
#include<stdlib.h>
#define N 100000
typedef struct {
  int p,k,dep;
  int *c;
} Node;
int main(){
  int i,j,n,id;
  Node T[N],t;
  scanf("%d",&n);
  for(i=0; i<n; i++){
    T[i].p = -1;
    T[i].dep = 0;
  }
  for(i=0; i<n; i++){
    scanf("%d",&id);
    scanf("%d",&T[id].k);
    T[id].c = (int *)malloc(sizeof(int)*T[id].k);
    for(j=0; j<T[id].k; j++){
      scanf("%d",&T[id].c[j]);
      T[T[id].c[j]].p = id;
    }
  }
  for(i=0; i<n; i++){
    t = T[i];
    while(1){
      if(t.p==-1) break;
      T[i].dep++;
      t = T[t.p];
    }
  }
  for(i=0; i<n; i++){
    if(T[i].dep==0){
      printf("node %d: parent = %d, depth = %d, root, [",i,T[i].p,T[i].dep);
      for(j=0; j<T[i].k-1; j++) printf("%d, ",T[i].c[j]);
      if(T[i].k!=0) printf("%d]\n",T[i].c[j]);
      else printf("]\n");
    }
    else if(T[i].k!=0 && T[i].p!=-1){
      printf("node %d: parent = %d, depth = %d, internal node, [", i,T[i].p,T[i].dep);
      for(j=0; j<T[i].k-1; j++) printf("%d, ", T[i].c[j]);
      printf("%d]\n",T[i].c[j]);
    }
    else if(T[i].k==0) printf("node %d: parent = %d, depth = %d, leaf, []\n",i,T[i].p,T[i].dep);
  }
  return 0;
}