#include<stdio.h>
#include<stdlib.h>

#define NIL -1

typedef struct{
  int p, l, r;
}Node;

Node T[100000];
int D[100000];

void print(int);
int rec(int, int);

int main()
{
  int n, id, deg, c, l, r;
  int i, j;
  
  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", &id, &deg);
	for(j=0;j<deg;j++)
	  {
	    scanf("%d", &c);
	    if(j==0)T[id].l = c;
	    else T[l].r = c;
	    l = c;
	    T[c].p = id;
	  }
    }

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

   rec(r, 0);

   for(i=0;i<n;i++)
     {
       print(i);
     }
  
  return 0;
}

void print(int u)
{
  int i=0, c=T[u].l;
  
  printf("node %d: parent = %d, depth = %d, ", u, T[u].p, D[u]);

  if(T[u].p==NIL)printf("root, ");
  else if(T[u].l==NIL)printf("leaf, ");
  else printf("internal node, ");

  printf("[");
  while(1)
    {
      if(c == NIL)break;
      
      if(i)printf(", ");
      printf("%d", c);

      i++; c=T[c].r;
    }
  printf("]\n");
}

int rec(int u, int p)
{
  D[u] = p;
  if(T[u].r != NIL)rec(T[u].r, p);
  if(T[u].l != NIL)rec(T[u].l, p+1);
}

