#include <bits/stdc++.h>
const int mod = (int)1e09 + 7;
int in(void) {
  int i;
  scanf("%d", &i);
  return i;
}
long long llin(void) {
  long long i;
  scanf("%lld", &i);
  return i;
}
double din(void) {
  double i;
  scanf("%lf", &i);
  return i;
}
void chin(char s[]) { scanf("%s", s); }
void print(int a) { printf("%d\n", a); }
void llprint(long long a) { printf("%lld\n", a); }
void dprint(double a) { printf("%.10f\n", a); }
void print2(int a, int b) { printf("%d %d\n", a, b); }
long long max(long long a, long long b) { return a > b ? a : b; }
long long min(long long a, long long b) { return a < b ? a : b; }
long long llabs(long long a) { return a > 0 ? a : -a; }
double dmax(double a, double b) { return a > b ? a : b; }
int cmp(const void *a, const void *b) {
  return *(long long *)a - *(long long *)b;
}
int cmp_r(const void *a, const void *b) {
  return *(long long *)b - *(long long *)a;
}
int char_cmp(const void *a, const void *b) {
  return strcmp((char *)a, (char *)b);
}
int char_cmp_r(const void *a, const void *b) {
  return strcmp((char *)b, (char *)a);
}
void swap(int *a, int *b) {
  int t = *a;
  *a = *b;
  *b = t;
}
long long gcd(long long x, long long y) { return x % y ? gcd(y, x % y) : y; }
long long lcm(long long x, long long y) { return x / gcd(x, y) * y; }
int main(void) {
  int n = in(), i, p[100001], ans = 0;
  for (i = 0; i < n; i++) p[i] = in();
  for (i = 0; i < n - 1; i++) {
    if (p[i] == i + 1 || p[i + 1] == i + 2) {
      swap(&p[i], &p[i + 1]);
      ans++;
    }
  }
  print(ans);
  return 0;
}
