#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;
}