#include <cstdio>
#include <algorithm>
#include <cmath>

using namespace std;

const int N = 100100;
const int INF = (1 << 30) + 1;

int best[N];
pair < int, int > v[N];

bool sort_pair(pair < int, int > a, pair < int, int > b) {
    return a.first > b.first;
}

int main() {
    int n, i, j, val, cnt, ans;

    scanf("%d", &n);
    for(i = 1; i <= n; i++) {
        scanf("%d", &val);
        v[i] = make_pair(val, i);
    }
    sort(v+1, v+n+1, sort_pair);
    for(i = 1; i <= n; i++) {
        best[i] = -INF;
    }
    cnt = 0;
    for(i = 1; i <= n && cnt < n; i++) {
        for(j = i + 1; j <= n && cnt < n; j++) {
            if(best[abs(v[i].second - v[j].second)] < v[i].first + v[j].first) {
                best[abs(v[i].second - v[j].second)] = v[i].first + v[j].first;
                cnt++;
            }
        }
    }
    ans = -INF;
    for(i = 1; i <= n; i++) {
        ans = max(ans, best[i] - (int)floor(log2(i)));
    }
    printf("%d\n", ans);
    return 0;
}