#include<stdio.h>
#define A -1
#define N 100005
 struct Node{
   int p,l,r;
 };
 
   struct Node T[N];
 
int depth(int);
void ko(int);
int main(){
  int id,k,c,m,i,j,n;

  scanf("%d",&n);
  for(i=0; i<n; i++){
    T[i].p = A;
    T[i].l = A;
    T[i].r = A;
  }
 
  for(i=0; i<n; i++){
    scanf("%d%d",&id,&k);
    for(j=0; j<k; j++){
      scanf("%d",&c);
      T[c].p = id;
      if(j == 0) T[id].l = c;
      else T[m].r = c;
      m=c;
    }
  }
 
  for(i=0; i<n; i++){
    printf("node %d: parent = %d, depth = %d, ", i,T[i].p,depth(i));
    if(T[i].p == A) printf("root, [");
    else if(T[i].l==A) printf("leaf, [");
    else printf("internal node, [");
 
    ko(i);
  }
 
  return 0;
}
 
int depth(int x){
  int d=0;
  while(T[x].p != A){
    u = T[x].p;
    d++;
  }
  return d;
}
 
void ko(int x){
  int c;
  c = T[x].l;
  while(c != NIL){
    printf("%d",c);
    c = T[c].r;
    if(c != A){
      printf(", ");
    }
  }
  printf("]\n");
}