
#define N 100005
#define NIL -1
struct Node{
    int p;
    int l;
    int r;
};
struct Node T[N];
int depth(int);
int child(int);
int main(){
    int i, j;
    int n, b, d, c, m;
    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", &b, &d);
        for(j = 0; j < d; j++){
            scanf("%d", &c);
            T[c].p = b;
            if(j == 0){
                T[b].l = c;
            } else {
                T[m].r = c; }
            m = c; }
    }
    for(i = 0; i < n; i++){
        printf("node %d: parent = %d, depth = %d, ", i, T[i].p, depth(i));
        if(T[i].p == NIL){
            printf("root, [");
        } else if(T[i].l == NIL){
            printf("leaf, [");
        } else{
            printf("internal node, [");
        }
        child(T[i].l);
        printf("]\n");
    }
    return 0; }
int depth(int x){
    int a;
    if(T[x].p == NIL){
        return 0;
    } else{
        a = depth(T[x].p) + 1;
        return a; }
}
int child(int x){
    if(x==NIL){

        return 0;
    } else {
        if(T[x].r == NIL){
            printf("%d", x);
        } else{
            printf("%d, ", x);
            child(T[x].r);
        } }
}
