// editor3#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
    int data;
    struct Node* left;
    struct Node* right;
}Node;
Node* newNode(int val)
{
    Node* temp=(Node*)malloc(sizeof(Node));
    temp->data=val;
    temp->left=temp->right=NULL;
    return temp;
}
Node* buildTree(int arr[],int n,int i)
{
    if(i>=n)
    return NULL;
    Node* root=newNode(arr[i]);
    root->left=buildTree(arr,n,2*i+1);
    root->right=buildTree(arr,n,2*i+2);
    return root;
}
void inorder(Node* root)
{
    if(root==NULL)
    return;
    inorder(root->left);
    printf("%d ",root->data);
    inorder(root->right);
}
int main()
{
    int n;
    if(scanf("%d",&n)!=1||n<=0)
    {
        printf("Invalid input\n");
        return 0;
    }
    int arr[n];
    for(int i=0;i<n;i++)
    {
        if(scanf("%d ",&arr[i])!=1)
        {
            printf("Invalid input\n");
            return 0;
        }
    }
    int pos,newVal;
    if(scanf("%d %d ",&pos,&newVal)!=2||pos<0||pos>=n)
    {
        printf("Invalid input\n");
        return 0;
    }
    arr[pos]=newVal;
    Node* root=buildTree(arr,n,0);
    inorder(root);
    return 0;
}