#include<stdio.h>
#define M 100000

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

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

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

int main(void) {
	int h, i, a[M + 1];
	scanf("%d",  &h);
	for (i = 1; i <= h; i++) {
		scanf("%d", &a[i]);
	}
	for (i = 1; i <= h; i++) {
		printf("node %d: key = %d, ", i, a[i]);
		if (p(i) >= 1) {
			printf("parent key = %d, ", a[p(i)]);
		}
		if (l(i) <= h) {
			printf("left key = %d, ", a[l(i)]);
		}
		if (r(i) <= h) {
			printf("right key = %d, ", a[r(i)]);
		}
		printf("\n");
	}
	return 0;
}

