#include <iostream>
#include <math.h>
#include <limits>

using namespace std;

int main()
{
    int n, i;
    long long a[100000], b[100000], m = numeric_limits<long long>::min();
    long pos[100000];

    cin >> n;

    for (i = 0; i < n; i++) {
        cin >> a[i];
    }

    b[0] = m;
    pos[0] = 0;

    for (i = 1; i < n; i++) {
        if (a[i-1] >= b[i-1] - floor(log2(i - pos[i-1]))) {
            b[i] = a[i-1];
            pos[i] = i - 1;
        } else {
            b[i] = b[i-1];
            pos[i] = pos[i-1];
        }

        if (a[i] + b[i] - floor(log2(i - pos[i])) > m) {
            m = a[i] + b[i] - floor(log2(i - pos[i]));
        }
    }

    cout << m << endl;

    return 0;
}