#include <stdio.h>

#define N 100005
#define NIL -1
  
 struct Node{
  int p;
  int l;
  int r;
};
struct Node T[N];

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

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