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

typedef struct{
  int parent;
  int left;
  int right;
}Tree;

Tree t[LEN];
int Depth[LEN];
int n;

void print(void);
int caldepth(int key,int depth);

int main(){
  int key,numchild,l,x,root;
  int i,j;
  
  //in
  scanf("%d",&n);

  //ini
  for(i=0;i<n;i++){
    t[i].parent=NIL;
    t[i].left=NIL;
    t[i].right=NIL;
  }
  
  //in
  for(i=0;i<n;i++){
    scanf("%d%d",&key,&numchild);
    for(j=0;j<numchild;j++){
      scanf("%d",&x);
      if(j)t[l].right=x;
      else t[key].left=x;
      l=x;
      t[x].parent=key;
    }
  }

  //find root
  for(i=0;i<n;i++)
    if(t[i].parent==NIL){
      root=i;
    }

  caldepth(root,0);

  print();

  return 0;
}

int caldepth(int key,int depth){
  Depth[key]=depth;
  if(t[key].left!=NIL)  caldepth(t[key].left, depth+1);
  if(t[key].right!=NIL) caldepth(t[key].right,depth);
}

void print(void){
  int i,j,k;
  int l,tmp;
  
  for(i=0;i<n;i++){

    printf("node %d: ",i);
    printf("parent = %d, depth = %d, ",t[i].parent,Depth[i]);

    if(t[i].parent==NIL)
      printf("root, ");
    else if(t[i].left==NIL)
      printf("leaf, ");
    else if(t[i].left!=NIL)
      printf("internal node, ");

    printf("[");
    for(k=0;;k++){
      if(k){
	printf(", ");
	printf("%d",t[l].right);
	l=t[l].right;
	if(t[l].right==NIL)break;
      }
      else{
	if(t[i].left==NIL)break;
	printf("%d",t[i].left);
	l=t[i].left;
	if(t[l].right==NIL)break;
      }
    }
    printf("]");

    printf("\n");
  }
}

