#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int value;
struct node *left;
struct node *right;
} Node;
Node* build_tree(int N) {
if (N==-1) {
return NULL;
}
Node
*root
= (Node
*)malloc(sizeof(Node
)); root->left = build_tree(N-1);
root->right = build_tree(N-1);
return root;
}
void set_leaf(Node *root, int M) {
if (M==1) {
scanf("%d", &(root
->value
)); }
else {
set_leaf(root->left, M/2);
set_leaf(root->right, M/2);
}
}
int read_leaf(Node *root, int i, int M){
char a[10];
for(int i=0; i<M; i++){
a[i]=root->value;
if(i<M/2){
return a[i];
}
else{
return a[i];
}
}
}
int main() {
int N, M;
Node *root = build_tree(N);
set_leaf(root, M);
for (int i = 0 ; i < M; i++)
printf("%d\n", read_leaf
(root
, i
, M
)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IG5vZGUgewogICAgaW50IHZhbHVlOwogICAgc3RydWN0IG5vZGUgKmxlZnQ7CiAgICBzdHJ1Y3Qgbm9kZSAqcmlnaHQ7Cn0gTm9kZTsKCk5vZGUqIGJ1aWxkX3RyZWUoaW50IE4pIHsKICAgIGlmIChOPT0tMSkgewogICAgICAgIHJldHVybiBOVUxMOwogICAgfQogICAgTm9kZSAqcm9vdCA9IChOb2RlKiltYWxsb2Moc2l6ZW9mKE5vZGUpKTsKICAgIHJvb3QtPmxlZnQgPSBidWlsZF90cmVlKE4tMSk7CiAgICByb290LT5yaWdodCA9IGJ1aWxkX3RyZWUoTi0xKTsKICAgIHJldHVybiByb290Owp9Cgp2b2lkIHNldF9sZWFmKE5vZGUgKnJvb3QsIGludCBNKSB7CiAgICBpZiAoTT09MSkgewogICAgICAgIHNjYW5mKCIlZCIsICYocm9vdC0+dmFsdWUpKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHNldF9sZWFmKHJvb3QtPmxlZnQsIE0vMik7CiAgICAgICAgc2V0X2xlYWYocm9vdC0+cmlnaHQsIE0vMik7CiAgICB9Cn0KCmludCByZWFkX2xlYWYoTm9kZSAqcm9vdCwgaW50IGksIGludCBNKXsKICAgICBjaGFyIGFbMTBdOwogICAgIGZvcihpbnQgaT0wOyBpPE07IGkrKyl7CiAgICAgICAgYVtpXT1yb290LT52YWx1ZTsKICAgICAgICBpZihpPE0vMil7CiAgICAgICAgICAgIHJldHVybiBhW2ldOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICByZXR1cm4gYVtpXTsKICAgICAgICB9CiAgICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGludCBOLCBNOwogICAgc2NhbmYoIiVkJWQiLCAmTiwgJk0pOwogICAgTm9kZSAqcm9vdCA9IGJ1aWxkX3RyZWUoTik7CgogICAgc2V0X2xlYWYocm9vdCwgTSk7CiAgICBmb3IgKGludCBpID0gMCA7IGkgPCBNOyBpKyspCiAgICAgICAgcHJpbnRmKCIlZFxuIiwgcmVhZF9sZWFmKHJvb3QsIGksIE0pKTsKICAgIHJldHVybiAwOwp9Cg==