#include #include #include using namespace std; const int maxn = 100005; const int maxlg = 18; int rmq[maxlg][maxn * 10]; int main() { int n; cin >> n; memset(rmq, -0x3f3f3f3f, sizeof(rmq)); for(int i = 1 ; i <= n ; ++ i) cin >> rmq[0][i]; for(int i = 1 ; i < maxlg ;++ i) for(int j = 1 ; j <= n ; ++ j) { rmq[i][j] = max(rmq[i - 1][j], rmq[i - 1][j + (1 << (i - 1))]); } long long ans = -0x3f3f3f3f; for(int i = 1 ; i < n ; ++ i) { for(int lg = 0 ; lg < maxlg ; ++ lg) { int st = i + (1 << lg); ans = max(ans, 1LL * rmq[0][i] + rmq[lg][st] - lg); } } cout << ans << '\n'; return 0; }