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

typedef struct
{
  int parent;
  int r;
  int l;
} Node;
  
Node T[1000000];
int D[1000000];

void depth(int u,int p)
{
  D[u] = p;
  if(T[u].r != NIL) depth(T[u].r,p);
  if(T[u].l != NIL) depth(T[u].l,p + 1);
}
 
int main()
{
  int i = 0,j = 0,n,v,d,c = 0,l,r,x = 0;

  scanf("%d",&n);

  for(i = 0;i < n;i++)
    {
      T[i].parent = NIL;
      T[i].l = NIL;
      T[i].r = NIL;
    }
  
  for(i = 0;i < n; i++)
    {
      scanf("%d%d",&v,&d);
      for(j = 0;j < d;j++)
	{
	  scanf("%d",&c);
	  if(j == 0) T[v].l = c;
	  else T[l].r = c;
	  l = c;
	  T[c].parent = v;
	}
    }
  for(i = 0;i < n;i++){
    if(T[i].parent == NIL) r = i;
  }
  depth(r,0);

  for(i = 0;i < n;i++)
    {
      printf("node %d: parent = %d, depth = %d, ",i,T[i].parent,D[i]);
      if(T[i].parent == NIL) printf("root, ");
      else if(T[i].l == NIL) printf("leaf, ");
      else printf("internal node, ");

      x = T[i].l;
      printf("[");
      for(j = 0;x != NIL;x = T[x].r,j++)
	{
	  if(j) printf(", ");
	  printf("%d",x);
	}
      printf("]\n");
    }

  return 0;
}

  

