#include #include 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 = 0; p = 1; for (i = 1; i <= n; i ++) { while (p <= u && dq [p] + dr < i) p ++; dq [++ u] = i; if (i != dq [p]) { if (ok == 0) { ans = a [i] + a [dq [p]] - (i - dq [p]); ok = 1; } else ans = max (ans, a [i] + a [dq [p]] - (i - dq [p])); } while (p <= u && a [dq [u]] < a [i]) u --; } } printf ("%d\n", ans); return 0; }