#include <stdio.h>
#define N 100000
#define NIL -1
struct Node{
  int l,p,r;
  };
struct Node T[N];
int depth(int),child(int);
int main(){
  int i,j,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);
      }
    }
  }

