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

/*
   void swap(int *x, int *y) {
   int temp;
   temp = *x;
 *x = *y;
 *y = temp;
 } */

int parent(int i) {
    return i/2;
}

int left(int i) {
    return 2*i;
}

int right(int i) {
    return 2*i + 1;
}

int main() {
    int n;
    int T[MAX];
    int i = 0;
    int r, l, p;

    while(i < MAX) {
        T[i] = NIL;
        i++;
    }

    scanf("%d", &n);
    for(i = 1; i < n+1; i++) {
        scanf("%d", &T[i]);
    }
    for(i = 1; i < n+1; i++) {
        l = left(i);
        r = right(i);
        p = parent(i);

        printf("node %d: key = %d, ", i, T[i]);
        if(i != 1) printf("parent key = %d, ", T[p]);
        if(T[l] != NIL) printf("left key = %d, ", T[l]);
        if(T[r] != NIL) printf("right key = %d, ", T[r]);
        printf("\n");
    }
    return 0;
}