#include <cmath>
#include <cstdio>
#include <deque>
#include <iostream>
#include <utility>
using namespace std;
constexpr int N = 2233233;
int n;
int m;
long long nums[N];
deque<pair<long long, int>> q;
long long dp[N];
long long res;
int main () {
freopen ("transportt.in", "r", stdin);
freopen ("transportt.out" ,"w", stdout);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> nums[i];
nums[i + n] = nums[i];
}
m = ceil (n / 2.0);
n *= 2;
for (int i = 1; i < m; i++) {
while (!q.empty() && (q.back().first - q.back().second) <= (nums[i] - i)) {
q.pop_back();
}
q.emplace_back(nums[i], i);
}
for (int i = m; i <= n; i++) {
while (!q.empty() && q.front().second <= i - m + 1) {
q.pop_front();
}
dp[i] = i - q.front().second + nums[i] + q.front().first;
res = max (res, dp[i]);
while (!q.empty() && (q.back().first - q.back().second) <= (nums[i] - i)) {
q.pop_back();
}
q.emplace_back(nums[i], i);
}
cout << res << endl;
return 0;
}