#include<stdio.h>
#define NIL -1

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

   struct Node T[1000000];

int depth(int);
void child(int);
int main(){
  int id,k,c,m;
  int i,j;
  int n;

  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",&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==NIL){
      printf("root, [");
    }

    else if(T[i].l==NIL){
      printf("leaf, [");
    }

    else{
      printf("internal node, [");
    }

    child(i);
  }

  return 0;
}

int depth(int u){
  int d=0;
  while(T[u].p!=NIL){
    u=T[u].p;
    d++;
  }
  return d;
}

void child(int u){
  int c=T[u].l;
  while(c!=NIL){
    printf("%d",c);
    c=T[c].r;
    if(c!=NIL){
      printf(", ");
    }
  }
  printf("]\n");
}