#include #include #include #define NMAX 100005 #define LMAX 20 #define inf 1LL * 1000000000 * 1000000000 using namespace std; long long i, n, j, rmq[NMAX][LMAX], lg, v[NMAX]; long long ans = -inf; int main() { cin >> n; for (i = 1; i <= n; ++ i) cin >> v[i]; for (i = 0; i <= NMAX - 1; ++ i) for (j = 0; j <= LMAX - 1; ++ j) rmq[i][j] = -inf; for (i = 1; i <= n; ++ i) rmq[i][0] = v[i]; for (j = 1; (1 << j) <= n; ++ j) for (i = 1; i + (1 << j) - 1 <= n; ++ i) rmq[i][j] = max(rmq[i][j - 1], rmq[i + (1 << (j - 1))][j - 1]); for (i = 1; i <= n; ++ i) for (j = 0; i + (1 << j) <= n; ++ j) ans = max(ans, v[i] + rmq[i + (1 << j)][j] - j); cout << ans << '\n'; return 0; }