/*
TASK:psort
LANG:C
*/
#include <stdio.h>
#define MAXN 50000
int a[MAXN],min[MAXN],max[MAXN],used1[MAXN],used2[MAXN],tmp,x=0,y=0;
int main()
{
int i,j,n;
scanf("%d",&n);
for(i=0;i<n;i++)
	used1[i]=0;
for(i=0;i<n;i++)
	used2[i]=0;

for(i=0;i<n;i++)
	{
  scanf("%d",&a[i]);
  if(i-a[i]>n/3)
  	{
    used1[a[i]-1]=1;
    //x++;
    }
  if(a[i]-i>n/3)
  	{
    used2[a[i]-1]=1;
    //y++;
    }
  a[i]--;
  }
tmp=0;
while(used1[tmp]==1) tmp++;
for(i=0;i<n-1;i++)
	{
  if(a[i]==tmp)
  	{
    for(j=tmp+1;used1[j]==1&&j<n;j++);
			tmp=j;
    }
  min[i]=tmp;
  if(used1[a[i]]==1)
  	{
    if(min[i]>=a[i])
    	x++;
    continue;  
    }
  used1[a[i]]=1;
  }
min[n-1]=n;
tmp=n-1;
while(used2[tmp]==1)tmp--;
for(i=0;i<n-1;i++)
	{
  if(a[i]==tmp)
  	{
    for(j=tmp-1;used2[j]==1&&j>0;j--);
			tmp=j;
    }
  max[i]=tmp;
	if(used2[a[i]]==1)
    {
    if(max[i]<=a[i])
    	y++ ;
    continue;
    }
  used2[a[i]]=1;
  }
max[n-1]=0;
for(i=0;i<n;i++)
	{
  if(a[i]>=min[i])
  	x++;
  if(a[i]<=max[i])
  	y++;
  }
if(x>y)
	printf("%d\n",y);
else
	printf("%d\n",x);
return 0;
}
    
  


