#include <bits/stdc++.h>
using namespace std;
unsigned long long inf = (1LL << 62);
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long max(long long a, long long b) {
  if (a < b) {
    return b;
  } else
    return a;
}
long long min(long long a, long long b) {
  if (a < b) return a;
  return b;
}
pair<long long, long long> dx[4] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
vector<pair<long long, long long> > list;
long long e[300][300];
long long r[300];
long long d[300][300];
void floyd(int N) {
  for (int k = 0; k < (int)(N + 1); k++) {
    for (int i = 0; i < (int)(N + 1); i++) {
      if (d[i + 1][k + 1] == inf) continue;
      for (int j = 0; j < (int)(N + 1); j++) {
        if (d[j + 1][k + 1] == inf) continue;
        d[i + 1][j + 1] =
            min(d[i + 1][j + 1], d[i + 1][k + 1] + d[j + 1][k + 1]);
      }
    }
  }
}
long long p[100005];
int main() {
  long long N;
  cin >> N;
  for (int i = 0; i < (int)(N); i++) {
    cin >> p[i + 1];
  }
  int j = 1;
  long long sum = 0;
  long long ans = 0;
  while (j <= N) {
    while (p[j] == j) {
      sum += 1;
      j += 1;
    }
    if (sum == 1) {
      ans += 1;
    } else if (sum > 1) {
      ans += sum - 1;
    }
    sum = 0;
    j += 1;
  }
  cout << ans << endl;
  return 0;
}
