#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; }