#include <stdio.h>
#include <string.h>

struct Node{
  int id;
  int k;
  int p;
  int d;
  char type[14];
  int c[1000];
};

int main(){
  int i,j,k,n;

  scanf("%d",&n);

  struct Node u[n];

  for(i=0;i<n;i++) u[i].p=-1;

  for(i=0;i<n;i++){
    scanf("%d%d",&u[i].id,&u[i].k);
    if(u[i].k!=0){
      for(j=0;j<u[i].k;j++) scanf("%d",&u[i].c[j]);
    }
  }

  for(i=0;i<n;i++){
    if(u[i].k!=0){
      for(j=0;j<u[i].k;j++){
	for(k=0;k<n;k++){
	  if(u[k].id==u[i].c[j])  u[k].p=u[i].id;
	}
      }
    }
  }

  for(i=0;i<n;i++){
    if(u[i].p==-1){
      u[i].d=0;
      strcpy(u[i].type,"root");
      break;
    }
  }

  for(i=0;i<n;i++){
    for(j=0;j<n;j++){
      if(u[i].p==u[j].id) u[i].d=u[j].d+1;
    }
  }
  
  for(i=0;i<n;i++){
    for(j=0;j<n;j++){
      if(u[i].p==u[j].id){
	if(j>i) u[i].d=u[j].d+1;
      }
    }
  }
  
  for(i=0;i<n;i++){
    if(strcmp(u[i].type,"root")==0) continue;
    else if(u[i].c[0]!=NULL) strcpy(u[i].type,"internal node");
    else strcpy(u[i].type,"leaf");
  }

  for(i=0;i<n;i++){
    for(j=0;j<n;j++){
      if(u[j].id==i){
	printf("node %d: parent = %d, depth = %d, %s, [",u[j].id,u[j].p,u[j].d,u[j].type);
	if(u[j].c[0]!=NULL){
	  for(k=0;k<u[j].k-1;k++) printf("%d, ",u[j].c[k]);
	  printf("%d]\n",u[j].c[u[j].k-1]);
	}
	else printf("]\n");
      }
    }
  }

  return 0;
}