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

typedef struct{
  //lは、left,rは、right,pは、parent//
  int p;
  int l;
  int r;
} T;
T t[1000005];

int main()
{
  int i,node,j,n,k,c[100005],depth=0,num;

  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",&node,&k);
    for(j=0;j<k;j++){
      scanf("%d",&c[j]);
      if(j==0){
	      t[c[0]].p=node;
        t[node].l=c[0];
      }
      else{
        t[c[j]].p=node;
        t[c[j-1]].r=c[j];
      }
    }
  }

  for(i=0;i<n;i++){
    
    num=i;
    while(t[num].p!=NIL){
      depth++;
      num=t[num].p;
    }

    printf("node %d: parent = %d, depth = %d,",i,t[i].p,depth);
    depth=0;
    if(t[i].p==NIL && t[i].l==NIL){
       printf(" root, []\n");
    }

    else if(t[i].p==NIL && t[i].l!=NIL){
      printf(" root, [%d",t[i].l);
      for(j=t[t[i].l].r;j!=NIL;j=t[j].r){
        printf(", %d",j);
      }
      printf("]\n");
    }

    else if(t[i].l!=NIL){
      printf(" internal node, [%d",t[i].l);
      for(j=t[t[i].l].r;j!=NIL;j=t[j].r){
        printf(", %d",j);
      }
      printf("]\n");
    }
    
    else{
      printf(" leaf, []\n");
    }
    
  }
  return 0;
}


  
    

      
          
