#include<stdio.h>
#include<stdlib.h>
#define NIL -1
#define N 250

int n, A[N];


void init(){
  int i;
  for(i = 0; i < N; i++){
    A[i] = NIL;
  }
}


int parent(int i){
  if(i/2 > n || i/2 <= 0) return NIL;
  return i/2;
}

int left(int i){
  if(2*i > n || 2*i <= 0) return NIL;
  return 2*i;
}

int right(int i){
  if(2*i+1 > n || 2*i+1 <= 0) return NIL;
   return 2*i+1;
}

int main(){

  int i, p, l, r;

  scanf("%d", &n);
  init();
  
  for ( i = 0; i < n; i++ ){
    scanf("%d", &A[i]);
  }

  for(i = 1; i <= n; i++){
    printf("node %d: key = %d, ", i, A[i-1]);
    if((p = parent(i)) != NIL) printf("parent key = %d, ", A[p-1]);
    if((l = left(i)) != NIL) printf("left key = %d, ", A[l-1]);
    if((r = right(i)) != NIL) printf("right key = %d, ", A[r-1]);
    printf("\n");
  }

  return 0;

}