#include<stdio.h>
#define MAX 250
#define NIL -201
struct Node_struct{int id, p, l, r;}; /*p: 親(parent), l: 一番左の子(left child), r:右の兄弟(right sibling)*/
typedef struct Node_struct Node;
Node T[MAX];

void print(int u){
  printf("node %d: key = %d, ", u, T[u].id);

  if(u != 1) printf("parent key = %d, ", T[u].p);
  if(T[u].l != NIL) printf("left key = %d, ", T[u].l);
  if(T[u].r != NIL) printf("right key = %d, ", T[u].r);

  printf("\n");
}


int main(){
  int i;
  int n;
  int id;

  scanf("%d", &n);
  for(i=1; i<=n; i++) T[i].id = T[i].p = T[i].l = T[i].r = NIL;

  for(i=1; i<=n ; i++){
    scanf("%d", &T[i].id);
    if(i != 1) T[i].p = T[i/2].id;
    if(T[i/2].l == NIL) T[i/2].l = T[i].id;
    else T[i/2].r = T[i].id;
    
  }

  //出力 (output)
  for(i=1; i<=n; i++) print(i);

  return 0;
}

