#include<stdio.h>
#include<algorithm>
#define maxn 100005
#define Lson (k<<1)
#define Rson (k<<1)|1
#define inf 0x3f3f3f3f
using namespace std;

int n;
int a[maxn];
int aint[maxn*4];
int sol;

void read()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
}

void build(int k,int left,int right)
{
    if(left==right) {aint[k]=a[left]; return;}
    int mid=(left+right)/2;

    build(Lson,left,mid);
    build(Rson,mid+1,right);

    aint[k]=max(aint[Lson],aint[Rson]);
}

void query(int k,int left,int right, int x,int y)
{
    if( x<=left && right<=y )
    {
        sol=max(sol,aint[k]);
        return;
    }
    int mid=(left+right)/2;

    if(x<=mid) query(Lson,left,mid,x,y);
    if(y>mid) query(Rson,mid+1,right,x,y);
}

void solve()
{
    int cnt=-inf;
    for(int i=1;i<n;i++)
     for(int j=0;i+(1<<j)<=n;j++)
     {
        sol=-inf; query(1,1,n,i+(1<<j),min(i+(1<<(j+1))-1, n));
        cnt=max(cnt, a[i]+sol-j);
     }

     printf("%d",cnt);
}

int main()
{
  //  freopen("date.in","r",stdin);

    read();
    build(1,1,n);
    solve();

    return 0;
}