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

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

struct node T[100000];
int n,D[100000];

void print(int u){
	int i,c;
	printf("node %d:",u);printf(" ");
	printf("parent = %d",T[u].p);printf(", ");
	printf("depth = %d",D[u]);printf(", ");
	if(T[u].p==NIL){
		printf("root");printf(", ");
	}
	else if (T[u].l==NIL){
		printf("leaf");printf(", ");
	}
	else {
		printf("internal node");printf(", ");
	}
	printf("[");
	for(i=0,c=T[u].l;c!=NIL;i++,c=T[c].r){
		if(i!=0)
			printf(", ");printf("%d",c);
	}
	printf("]\n");
}

	void 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);
	}

	int main(){
		int i,j,k,id,c,r,l;
		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",&id,&k);
			for(j=0;j<k;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;
}
