#include <stdio.h>
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,i;
        scanf("%d",&n);
        int A[100000];
        for(i=1; i<=n; i++) {
                scanf("%d",&A[i]);
        }
        for(i=1; i<=n; i++) {

                printf("node %d: key = %d, ",i,A[i]);
                if(parent(i)>=1) {
                        printf(" parent key = %d,",A[parent(i)]);
                }
                if(left(i)<=n) {
                        printf(" left key = %d,",A[left(i)]);
                }
                if(right(i)<=n) {
                        printf(" right key = %d,",A[right(i)]);
                }

                printf("\n");
        }
        return 0;
}