#include <bits/stdc++.h>
using namespace std;
const int MAXN = 8005;
int n, P[MAXN], s[MAXN][4];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for(int i=1;i<=n;i++){
cin >> P[i];
s[i][0] = min(n-i, n-P[i]);
s[i][1] = min(i-1, n-P[i]);
s[i][2] = min(n-i, P[i]-1);
s[i][3] = min(i-1, P[i]-1);
}
int k = 0;
while(true){
vector<array<int,3>> sq;
for(int i=1;i<=n;i++)
for(int j=0;j<4;j++)
if(s[i][j]!=-1)
sq.push_back({-s[i][j], i, j}), s[i][j]=-1;
if(sq.empty()) break;
sort(sq.begin(), sq.end());
int S = 600; // 후보 상한
if((int)sq.size()>S) sq.erase(sq.begin()+S, sq.end());
for(auto [d,i,j]: sq){
d = -d;
int x1, x2, y1, y2;
if(j&1) x1 = i-d, x2 = i-1;
else x1 = i+1, x2 = i+d;
if(j&2) y1 = P[i]-d, y2 = P[i]-1;
else y1 = P[i]+1, y2 = P[i]+d;
for(int t = max(1,x1); t <= min(n,x2); t++){
if(P[t]<y1 || P[t]>y2) continue;
s[t][0] = max(s[t][0], min(x2-t, y2-P[t]));
s[t][1] = max(s[t][1], min(t-x1, y2-P[t]));
s[t][2] = max(s[t][2], min(x2-t, P[t]-y1));
s[t][3] = max(s[t][3], min(t-x1, P[t]-y1));
}
}
k++;
}
cout << n-k << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTUFYTiA9IDgwMDU7CmludCBuLCBQW01BWE5dLCBzW01BWE5dWzRdOwoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGNpbiA+PiBuOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspewogICAgICAgIGNpbiA+PiBQW2ldOwogICAgICAgIHNbaV1bMF0gPSBtaW4obi1pLCBuLVBbaV0pOwogICAgICAgIHNbaV1bMV0gPSBtaW4oaS0xLCBuLVBbaV0pOwogICAgICAgIHNbaV1bMl0gPSBtaW4obi1pLCBQW2ldLTEpOwogICAgICAgIHNbaV1bM10gPSBtaW4oaS0xLCBQW2ldLTEpOwogICAgfQoKICAgIGludCBrID0gMDsKICAgIHdoaWxlKHRydWUpewogICAgICAgIHZlY3RvcjxhcnJheTxpbnQsMz4+IHNxOwogICAgICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKQogICAgICAgICAgICBmb3IoaW50IGo9MDtqPDQ7aisrKQogICAgICAgICAgICAgICAgaWYoc1tpXVtqXSE9LTEpCiAgICAgICAgICAgICAgICAgICAgc3EucHVzaF9iYWNrKHstc1tpXVtqXSwgaSwgan0pLCBzW2ldW2pdPS0xOwoKICAgICAgICBpZihzcS5lbXB0eSgpKSBicmVhazsKCiAgICAgICAgc29ydChzcS5iZWdpbigpLCBzcS5lbmQoKSk7CiAgICAgICAgaW50IFMgPSA2MDA7IC8vIO2bhOuztCDsg4HtlZwKICAgICAgICBpZigoaW50KXNxLnNpemUoKT5TKSBzcS5lcmFzZShzcS5iZWdpbigpK1MsIHNxLmVuZCgpKTsKCiAgICAgICAgZm9yKGF1dG8gW2QsaSxqXTogc3EpewogICAgICAgICAgICBkID0gLWQ7CiAgICAgICAgICAgIGludCB4MSwgeDIsIHkxLCB5MjsKICAgICAgICAgICAgaWYoaiYxKSB4MSA9IGktZCwgeDIgPSBpLTE7CiAgICAgICAgICAgIGVsc2UgeDEgPSBpKzEsIHgyID0gaStkOwogICAgICAgICAgICBpZihqJjIpIHkxID0gUFtpXS1kLCB5MiA9IFBbaV0tMTsKICAgICAgICAgICAgZWxzZSB5MSA9IFBbaV0rMSwgeTIgPSBQW2ldK2Q7CiAgICAgICAgICAgIGZvcihpbnQgdCA9IG1heCgxLHgxKTsgdCA8PSBtaW4obix4Mik7IHQrKyl7CiAgICAgICAgICAgICAgICBpZihQW3RdPHkxIHx8IFBbdF0+eTIpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgc1t0XVswXSA9IG1heChzW3RdWzBdLCBtaW4oeDItdCwgeTItUFt0XSkpOwogICAgICAgICAgICAgICAgc1t0XVsxXSA9IG1heChzW3RdWzFdLCBtaW4odC14MSwgeTItUFt0XSkpOwogICAgICAgICAgICAgICAgc1t0XVsyXSA9IG1heChzW3RdWzJdLCBtaW4oeDItdCwgUFt0XS15MSkpOwogICAgICAgICAgICAgICAgc1t0XVszXSA9IG1heChzW3RdWzNdLCBtaW4odC14MSwgUFt0XS15MSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGsrKzsKICAgIH0KCiAgICBjb3V0IDw8IG4tayA8PCAnXG4nOwp9