#include <stdio.h>

int parentkey(int);
int leftkey(int);
int rightkey(int);

int a[250];

int main(){

  int h;
  int i, j;

  scanf("%d", &h);

  for(i=1; i<=h; i++){
    scanf("%d", &a[i]);
  }
  //print
  for(i=1; i<=h; i++){
    printf("node %d: key = %d, ", i, a[i]);

    if(parentkey(i)>=1){ //rootじゃない時
      printf("parent key = %d, ", a[parentkey(i)]);
    }//rootの時はスルー

    if(leftkey(i)<= h){//leftが個数の最大であるhを越えない、つまり子が存在している時
      printf("left key = %d, ", a[leftkey(i)]);
    }

    if(rightkey(i)<= h){
      printf("right key = %d, ", a[rightkey(i)]);
    }
    printf("\n");
  }

  return 0;
}

int parentkey(int i){

  return i/2;
}
int leftkey(int i){
  return i*2;
}
int rightkey(int i){
  return (i*2+1);
}

