#include <cstdio> #include <set> using namespace std; #define maxn 100010 int n, m; int v[maxn]; multiset<int> g; int main() { scanf("%d", &n); for(int i=1; i<=n; ++i) scanf("%d", &v[i]); long long sol=1LL*v[1]+v[2]; g.insert(-v[1]); for(int i=2; i<=n; ++i) { for(int j=1; i-(1<<j)>0; ++j) { g.erase(g.find(-v[i-(1<<j)])); --v[i-(1<<j)]; g.insert(-v[i-(1<<j)]); } sol = max(sol, 1LL*v[i]-(*g.begin())); g.insert(-v[i]); } printf("%lld\n", sol); return 0; }