//对于每个元素,往前看N/2个
//当前是i,前面是j
//i-j+a[i]+a[j]=i+a[i]+a[j]-j
//i是固定的,所以可以用滑动窗口优化,单调队列
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=2e6+10;
int n;
int w[N];
int q[N];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>w[i];
w[i+n]=w[i];
}
//滑动窗口优化
int res=0;
int hh=0,tt=-1;
int len=n/2;
for(int i=1;i<=2*n;i++)
{
//对头不在区间内
if(hh<=tt&&q[hh]<i-len)
hh++;
res=max(res,i-q[hh]+w[q[hh]]+w[i]);
while(hh<=tt&&w[q[tt]]-q[tt]<=w[i]-i)
tt--;
q[++tt]=i;
}
cout<<res<<endl;
return 0;
}