#include <stdio.h>
#define N -1
   
struct s {
  int a;
  int b;
  int c;
};
 
 
struct s T[100000];
int n,K[100000];
   
int dep(int,int);
void str(int);
   
int main(){
   
  int i,j,id,k,d,l,r,m,n,num;
  /*??\???*/ 
  scanf("%d",&n);
   
   
  for(i=0;i<n;i++){
    T[i].a = N;
    T[i].b = N;
    T[i].c = N;
  }
  for(i = 0;i < n; i++){
    scanf("%d",&i); 
    scanf("%d",&m);
    
  
  for(j = 0;j < m;j++){
   
    scanf("%d",&num);
  }
  }
  /*??????*/
  for(i  = 0;i < n; i++){
    if(T[i].a == N) 
      d = i;
  }
  dep( d , 0);
   
  for(i = 0;i < n ; i++) str(i);
   
  return 0;
}
   
int dep(int u, int a){
  K[u] = a;
  if(T[u].b != N) return dep(T[u].b,a);
  if(T[u].c != N) return dep(T[u].c,a + 1);
}
   
void str(int u){
   
  int i,d;
   
  printf("node %d: ", u);
  printf("parent = %d, ", T[u].a);
  printf("depth = %d, ", K[u]);
   
  if(T[u].a == N ) printf("root, ");
   
  else if(T[u].c == N) printf("leaf, ");
   
  else printf("internal node, ");
   
  printf("[");
   
  for(i=0,d = T[u].c ; d !=N;i++,d = T[d].b){
    if(i) printf(", ");
    printf("%d",d);
  }
  printf("]\n");
}