#include <cstdio>
#include <algorithm>

#define f first
#define s second

using namespace std;

int rmq[32][100010];

int main ()
{
    //freopen ("file.in", "r", stdin);

    int n;
    scanf ("%d", &n);

    for (int i = 1; i <= n; ++i)
        scanf ("%d", &rmq[0][i]);

    for (int i = 1; (1 << i) <= n; ++i)
        for (int j = 1; j + (1 << (i - 1)) - 1 <= n; ++j)
            rmq[i][j] = max (rmq[i - 1][j], rmq[i - 1][j + (1 << (i - 1))]);

    long long rez = -2000000000000000LL;
    for (int i = 1; i < n; ++i)
        for (int j = 0; (1 << j) + i - 1 <= n; ++j)
            rez = max (rez, 1LL * rmq[0][i] + 1LL * rmq[j][i + (1 << j)] - 1LL * j);

    printf ("%lld\n", rez);

    return 0;
}