#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
#define Khela ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define ll long long int
#define llu long long unsigned int
#define pf printf
#define sf scanf
#define f first
#define s second
#define pb push_back
#define mk make_pair
#define pii pair<int ,int>
#define PII pair<ll ,ll>
 
int dx8[] = {0, 0, 1, 1, 1, -1, -1, -1};
int dy8[] = {1,-1, 1, -1, 0, 0, -1, 1};
int dx4[] = {0, 0, 1, -1};
int dy4[] = {1, -1, 0, 0};
 
typedef tree<pair<int,int>,null_type,less<pair<int,int>>,rb_tree_tag,tree_order_statistics_node_update>ordered_set;
int Set(int N,int pos){return N=N | (1<<pos);}
int reset(int N,int pos){return N= N & ~(1<<pos);}
bool check(int N,int pos){return (bool)(N & (1<<pos));}
double eps =000000000.1;
const int Max=1e9+100;
const ll  MAX=1e18+500;
const int sz=1e3+100;
map<ll,int> mp;
int main()
{
    Khela
    ll  a,b,c,i,j,k,q,p,x,y,ct,ct1,m,l,r,x1,y1,mn,h,sum1,in,z,mid,n,mx,A,B;
    char ch;
    double d;
    string str1,str2,str;
    bool bl,bl1;
    int t,cs=1;
    while(cin>>n)
    {
        int sum[n+2];
        for(i=1;i<=n;i++){
            cin>>x;
            if(x==i) sum[i]=1;
            else sum[i]=0;
        }
        
        int tot=0;
        int last=0;
        for(i=1;i<=n;i++){
            if(sum[i]==1) ++last;
            else{
                if(last>0){
                    tot+=(int)(ceil((double)(last)/2.00));
                }
                last=0;
            }
        }
                    if(last>0){
                    tot+=(int)(ceil((double)last)/2.00);
                    }
                   last=0;
                   cout<<tot<<endl;
    }




}