#include <cstdio>
#include <algorithm>
using namespace std;

const int N = 100005;

int a [N], dq [N];

int main () {
    int lim, i, n, v, p, u, dr, ans, d, ok = 0;

    /*freopen ("red.ib", "r", stdin);
    freopen ("red.out", "w", stdout);*/

    scanf ("%d", &n);
    for (i = 1; i <= n; i ++) {
        scanf ("%d", &a [i]);
    }
    for (lim = 0, v = 1; v < n; v = v << 1, lim ++);
    for (d = 0; d <= lim; d ++) {
        dr = (1 << (d + 1)) - 1;
        u = 1;
        p = 1;
        dq [1] = 1;
        for (i = 2; i <= n; i ++) {
            while (p <= u && i - dq [p] > dr)
                p ++;
            if (i != dq [p]) {
                if (ok == 0) {
                    ans = a [i] + a [dq [p]] - d;
                    ok = 1;
                }
                else
                    ans = max (ans, a [i] + a [dq [p]] - d);
            }
            while (p <= u && a [dq [u]] < a [i])
                u --;
             dq [++ u] = i;
        }
    }
    printf ("%d\n", ans);
    return 0;
}