#include #include using namespace std; const int N_MAX = 1e5; const int LG_MAX = 17; const int INF = 0xc0c0c0c0; int N; int a[LG_MAX][6 * N_MAX]; int main() { memset(a, INF, sizeof a); cin >> N; for (int i = 1; i <= N; ++i) cin >> a[0][i]; for (int i = 1; i < LG_MAX; ++i) for (int j = 1; j <= N; ++j) a[i][j] = max(a[i - 1][j], a[i - 1][j + (1 << (i - 1))]); int ans = INF; for (int i = 1; i <= N; ++i) for (int j = 0; j < LG_MAX; ++j) ans = max(ans, a[0][i] - j + a[j][i + (1 << j)]); cout << ans << "\n"; return 0; }