#include <stdio.h>
static int flag=0;
void selectknode(int ar[],int n,int k,int m)
{//n为数组元素个数,k为找到第k层的条件,m为根节点
    
    if(m>=n)//说明该节点不存在,返回
        return;
    if(k==1)//找到第k层的节点
    {
        if(flag==0)//用flag的原因是为了控制输出时的空格
        {
            flag=1;//表示有深度为k的节点,并控制输出格式中的空格
            printf("%d",ar[m]);
        }
        else
            printf(" %d",ar[m]);
        return;//返回
    }
    selectknode(ar,n,k-1,2*m+1);//查找左子树
    selectknode(ar,n,k-1,2*m+2);//查找右子树
}
int main() {
    int n;
    scanf("%d",&n);
    int ar[n];
    for(int i=0;i<n;++i)
        scanf("%d",&ar[i]);
    int d;
    scanf("%d",&d);
    selectknode(ar,n,d,0);//用递归实现
    if(flag==0)//表示没有深度为k的节点
        printf("EMPTY");
    printf("\n");
    return 0;
}