#include<bits/stdc++.h>
#define LL long long
#define GG int
#define For(i, j, k) for(int i=j; i<=k; i++)
#define Dow(i, j, k) for(int i=j; i>=k; i--)
inline GG read() {
GG x = 0, f = 1;
char ch = getchar();
while(ch<'0'||ch>'9') { if(ch=='-') f = -1; ch = getchar(); }
while(ch>='0'&&ch<='9') { x = x*10+ch-48; ch = getchar(); }
return x * f;
}
const int N = 10;
int n, m, num;
int tree[300], f[300], a[300];
void dfs(int x) {
if(x>n) return;
dfs(x*2);
dfs(x*2+1);
tree[x] = a[++num];
}
int main() {
n = read();
For(i, 1, n) a[i] = read();
dfs(1);
For(i, 1, n-1) printf("%d ",tree[i]);
printf("%d", tree[n]);
return 0;
}