#include <bits/stdc++.h>
using namespace std;
void _main();
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  _main();
}
const int inf = INT_MAX / 2;
const long long infl = 1LL << 60;
template <class T>
bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T &a, const T &b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
template <typename T, int N, T F(const T &a, const T &b)>
struct SegTree {
 public:
  SegTree() { dat = vector<T>(N * 2 - 1, 0); }
  void update(int i, T x) {
    i += N - 1;
    dat[i] = x;
    while (i > 0) {
      i = (i - 1) / 2;
      dat[i] = F(dat[i * 2 + 1], dat[i * 2 + 2]);
    }
  }
  T query(int a, int b, int k = 0, int l = 0, int r = N) {
    if (r <= a || b <= l) return 0;
    if (a <= l && r <= b)
      return dat[k];
    else {
      T vl = query(a, b, k * 2 + 1, l, (l + r) / 2);
      T vr = query(a, b, k * 2 + 2, (l + r) / 2, r);
      return F(vl, vr);
    }
  }
  vector<T> dat;
};
void _main() {
  int N;
  cin >> N;
  vector<int> p(N);
  for (int i = 0; i < N; i++) cin >> p[i];
  int ans = 0;
  for (int i = 0; i < N - 1; i++) {
    if (p[i] == i + 1) {
      swap(p[i], p[i + 1]);
      ++ans;
    }
  }
  cout << ans << endl;
}
