#include using namespace std; const int NMAX = 100000 + 1; const int LOG_MAX = 18; const int INF = 0x3fffffff; int n; int rmq[LOG_MAX][NMAX]; void citeste() { cin >> n; for (int i = 1; i <= n; i++) cin >> rmq[0][i]; } void init() { for (int i = 1, p = 1; i < LOG_MAX; i++, p *= 2) for (int j = 1; j <= n; j++) { rmq[i][j] = max(rmq[i - 1][j], rmq[i - 1][j + p]); } } void rezolva() { long long sol = (-1) * INF; for (int i = 1; i < n; i++) for (int lg = 0, p = 1; lg < LOG_MAX; lg++, p *= 2) { sol = max(sol, 1LL * rmq[0][i] + rmq[lg][i + p] - lg); } cout << sol << '\n'; } int main() { citeste(); init(); rezolva(); }