#include<bits/stdc++.h>
#define mp make_pair
#define PII pair<int,int>
#define fi first
#define se second
using namespace std;

const int NMAX=100005;

int n,a[NMAX],rmq[20][NMAX],lg[NMAX];
int sol;

void RMQ()
{
    int i,j;
    lg[2]=1;
    for (i=3;i<NMAX;i++) lg[i]=lg[i>>1]+1;
    for (i=1;i<=n;i++) rmq[0][i]=a[i];
    for (j=1;j<=lg[n];j++)
        for (i=1;i<=(n-(1<<j)+1);i++)
            rmq[j][i]=max(rmq[j-1][i],rmq[j-1][i+(1<<(j-1))]);
}

int Query(int x,int y)
{
    int dif;
    dif=lg[y-x+1];
    return max(rmq[dif][x],rmq[dif][y-(1<<dif)+1]);
}

int main()
{
    int i,j,l,k;
   // freopen("date.in","r",stdin);
    //freopen("date.out","w",stdout);
    cin.sync_with_stdio(false);
    cin>>n;
    for (i=1;i<=n;i++) cin>>a[i];
    sol=-(1<<30);
    RMQ();
    for (i=2;i<=n;i++)
        {
            sol=max(sol,a[i]+a[i-1]);
            for (j=1;j<=20;j++)
            {
                l=max(1,i-(1<<j));
                k=max(1,i-(1<<(j+1))+1);
                //vreau max pe k-l
                sol=max(sol,a[i]+Query(k,l)-j);
            }
        }
    cout<<sol<<"\n";
    return 0;
}