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

/*
p: parent
l: left-child
r: right sibling
*/
struct Node{ int p, l, r; };
struct Node T[MAX]; // Tree

int depth(int u){
	int d = 0;
	if (T[u].p == -1){ return 0; }
	return 1 + depth(T[u].p);
}

void print_child(int u){
	if (u == -1){ return 0; }  
	if (T[u].r == -1){ printf("%d", u); return 0; }
	printf("%d, ", u);
	print_child(T[u].r);
}

void print(int u){
	printf("node %d: parent = %d, depth = %d, %s, [", u, T[u].p, depth(u), T[u].p == -1 ? "root" : (T[u].l == -1 ? "leaf" : "internal node"));
	print_child(T[u].l);
	printf("]\n");
}

main(){
	int i, j, d, v, c, l, n;

	scanf("%d", &n);

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

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