#include <bits/stdc++.h>
using namespace std;
long long n,ans;
long long a[10000010];
deque <int> q;
int main(){
freopen("transportt.in","r",stdin);
freopen("transportt.out","w",stdout);
scanf("%lld",&n);
for(long long i=1;i<=n;i++){
scanf("%lld",&a[i]);
a[i+n]=a[i];
}
for(long long i=1;i<=2*n;i++){
while (q.empty()==0&&i-q.front()>n/2)
q.pop_front();
if (q.empty()==0)
ans=max(ans, a[i]+a[q.front()]+i-q.front());
while(q.empty()==0&&a[q.back()]-q.back()<= a[i]-i)
q.pop_back();
q.push_back(i);
}
printf("%lld",ans);
return 0;
}