#include <stdio.h>

#define MAX 100000
#define NIL -1

int getDepth(int);
void printChildren(int);


typedef struct {
  int pnt,lc,rs;
}node;

node T[MAX];

int main(){
  int n,dg,id,c,pre;
  int i,j;
  int root;
  
  scanf("%d",&n);

  for(i=0;i<n;i++)T[i].pnt=T[i].lc=T[i].rs=NIL;

  for(i=0;i<n;i++){
    scanf("%d%d",&id,&dg);
    for(j=0;j<dg;j++){
      scanf("%d",&c);

      if(j==0)T[id].lc=c;
      else  T[pre].rs=c;
      pre=c;

      T[c].pnt=id;
    }
  }

  for(i=0;i<n;i++){
    if(T[i].pnt==NIL)root=i;
  }

  for(i=0;i<n;i++){
    printf("node %d: parent = %d, depth = %d, ",i,T[i].pnt,getDepth(i));
    if(T[i].pnt==NIL)printf("root, ");
    else if(T[i].lc==NIL)printf("leaf, "); 
    else if(T[i].pnt!=NIL && T[i].lc!=NIL)printf("internal node, ");
    printf("[");
    printChildren(i);
    printf("]\n");
  }

 return 0;
}

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

void printChildren(int u){
  int c;
  c=T[u].lc;
  while(c!=NIL){
    printf("%d",c);
    c=T[c].rs;
    if(c!=NIL)printf(", ");
  }
}
		       