#include <bits/stdc++.h>

using namespace std;

# define pb push_back
# define mp make_pair
# define FORN( a , b , c ) for ( int a = b ; a <= c ; ++ a )
# define FORNBACK( a , b , c ) for ( int a = b ; a >= c ; -- a )

set < pair < long long , int > > S ;

long long v [ 100999 ] ;

int main()
{
    ios :: sync_with_stdio ( false ) ;

    //freopen( "input" , "r" , stdin ) ;
    //freopen( "output" , "w" , stdout ) ;
    int n ;
    cin >> n ;
    FORN ( i , 1 , n )
        cin >> v [ i ] ;
    S.insert ( mp ( v [ n ] , n ) ) ;
    long long sol = - ( 1 << 30 ) ;
    FORNBACK ( i , n - 1 , 1 ) {
        /*while ( 1 )
        {
            int a = S.rbegin()->first ;
            int b = S.rbegin()->second ;
            S.erase ( S.find ( mp ( a , b )) ) ;
            long long aux1 = v [ i ] + a - floor ( log2 ( b - i ) ) ;
            sol = max ( sol , aux1 ) ;
            if ( S.size ( ) ) {
                if ( aux1 < v [ i ] + S.rbegin()->first - floor ( log2 ( S.rbegin()->second - i ) ) )
                    continue ;
                else break ;
            }
            else break ;
        }*/
        long long aux = v [ i ] + S.rbegin()->first - floor ( log2 ( S.rbegin()->second - i ) ) ;
        sol = max ( sol , aux ) ;
        S.insert ( mp ( v [ i ] , i ) ) ;
    }
    cout << sol << '\n' ;

   // FORN ( i , 1 , n )
    //    FORN ( j , i + 1 , n )
    //        cout << i << ' ' << j << ' ' << v [ i ] + v [ j ] - floor ( log2 ( j - i ) ) << '\n' ;
    return 0 ;

}