```cpp
#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){//快读
int X=0;bool d=0;char ch=0;
while(!isdigit(ch)) d|=ch=='-',ch=getchar();
while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
return d?-X:X;
}
short n=read();
int dfs(int x,short dep){
if(dep==n) return read();//输入完毕,退出递归
return read()+max(dfs(x<<1,dep+1),dfs(x<<1|1,dep+1));//取最大
}
signed main(){
cout<<dfs(1,1);
return 0;
}
```