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

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

struct Node T[MAX];
int n;

int main()
{
  int i, j, k, a, b, c, d, p, dep = 0;

  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",&a,&b);

      for(j = 0; j < b; j++)
	{
	  scanf("%d",&c);
	  if(j == 0)T[a].l = c;
	  else T[d].r = c;
	  d = c;
	  T[c].p = a;
	}
    }

  for(i = 0; i < n; i++)
    {
      printf("node %d: ",i);
      
      printf("parent = %d, ",T[i].p);

      k = i;
      dep = 0;
      while(T[k].p != NIL)
	{
	  k = T[k].p;
	  dep++;
	}
      printf("depth = %d, ",dep);
      
      if(T[i].p == NIL)
	{
	  printf("root, [");
	  if(T[i].l != -1)
	    {
	      printf("%d",T[i].l);
	      k = T[i].l;
	      while(T[k].r != NIL)
		{
		  printf(", %d",T[k].r);
		  k = T[k].r;
		}
	    }
	  printf("]\n");
	}
      else if(T[i].l == NIL)printf("leaf, []\n");
      else
	{
	  printf("internal node, [");
	      printf("%d",T[i].l);
	      k = T[i].l;
	      while(T[k].r != NIL)
		{
		  printf(", %d",T[k].r);
		  k = T[k].r;
		}
	  printf("]\n");
	}
    }
  
  return 0;
}

