#include <stdio.h>
#include <stdlib.h>

int inf=10000000;

typedef struct{
	int *Q;
	int n;
}C_P;

int Minmin(int a,int b){
	int ans;
	if (a>b){
		ans=b;
	}
	else{
		ans=a;
	}
	return ans;
}

C_P *Change(int N,int *P){
	C_P *A=malloc(sizeof(C_P));
	int *Q=malloc(N*sizeof(int));
	int i;
	int j=0;
	int first=0;
	for (i=0;i<N;i++){
		Q[i]=P[i];
	}
	while (j<N-1){
		if (P[j]==j+1){
			if (P[j+1]==j+2){
				Q[j]=P[j+1];
				Q[j+1]=P[j];
				first++;
				j=j+2;
			}
		}
		j++;
	}
	A->Q=Q;
	A->n=first;
	return A;
}

C_P *Change2(int N,int *P){
	C_P *A=malloc(sizeof(C_P));
	int *Q=malloc(N*sizeof(int));
	Q=P;
	int i;
	int n=0;
	if (P[N-1]==N){
		Q[N-2]=P[N-1];
		Q[N-1]=P[N-2];
		n++;
	}
	for (i=0;i<N-1;i++){
		if (P[i]==i+1){
			Q[i]=P[i+1];
			Q[i+1]=P[i];
			n++;
		}
	}
	A->Q=Q;
	A->n=n;
	return A;
}

int main(){
	int N;
	scanf("%d",&N);
	int i;
	int *P=malloc(N*sizeof(int));
	for (i=0;i<N;i++){
		scanf("%d",&P[i]);
	}
	C_P *A=Change(N,P);
	C_P *B=Change2(N,A->Q);
	//int ans=Min(N,A->Q)+A->n;
	int ans=A->n+B->n;
	printf("%d\n",ans);
}