#include <stdio.h>
#define MAX 100005



    struct Node{
    int p,l,r;
  };

  struct Node T[MAX];


  int depth(int);
  int child(int);

  int main(){
    int i, j,n,a,b,c,m;
  scanf("%d", &n);

  for(i = 0; i < n; i++){
   T[i].p = -1;
   T[i].l = -1;
   T[i].r = -1;
  }
  for(i = 0; i < n; i++){
    scanf("%d %d", &a, &b);
    for(j = 0; j < b; j++){
      scanf("%d", &c); 
      T[c].p = a;
      if(j == 0){
        T[a].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 == -1){
      printf("root, [");
    } else if(T[i].l == -1){
      printf("leaf, [");
    } else{
    printf("internal node, [");
    }
    child(T[i].l);
    printf("]\n");
  }
  return 0;
}
   
  int depth(int x1){
  int a;  
  if(T[x1].p == -1){
    return 0;
  } else{
    a = depth(T[x1].p) + 1;
    return a;
  }
}
   
int child(int x2){
  if(x2==-1){
    return 0;
  } else {
    if(T[x2].r == -1){
      printf("%d", x2);
    } else{
      printf("%d, ", x2);
      child(T[x2].r);
    }
  }
}