output_description: Print the minimum required number of operations
  
  * * *
input_description: The input is given from Standard Input in the following format:
  
      
      
      N
      p_1 p_2 .. p_N
attempt: import math, string, itertools, fractions, heapq, collections, re, array, bisect, sys, random, time, copy, functools
  
  sys.setrecursionlimit(10**7)
  inf = 10**20
  gosa = 1.0 / 10**10
  mod = 10**9 + 7
  
  
  def LI():
      return [int(x) for x in sys.stdin.readline().split()]
  
  
  def LI_():
      return [int(x) - 1 for x in sys.stdin.readline().split()]
  
  
  def LF():
      return [float(x) for x in sys.stdin.readline().split()]
  
  
  def LS():
      return sys.stdin.readline().split()
  
  
  def I():
      return int(sys.stdin.readline())
  
  
  def F():
      return float(sys.stdin.readline())
  
  
  def S():
      return input()
  
  
  def main():
      n = I()
      a = LI_()
      r = 0
      for i in range(n - 1):
          if a[i] == i:
              r += 1
              a[i + 1] = i
      if a[-1] == n - 1:
          r += 1
      return r
  
  
  print(main())
  
problem_description: Statement
  
  You are given a permutation p_1,p_2,...,p_N consisting of 1,2,..,N. You can
  perform the following operation any number of times (possibly zero):
  
  Operation: Swap two **adjacent** elements in the permutation.
  
  You want to have p_i ≠ i for all 1≤i≤N. Find the minimum required number of
  operations to achieve this.
samples: [{"input": "5\n    1 4 3 5 2", "output": "2\n    \n\nSwap 1 and 4, then swap 1 and 3. p is now 4,3,1,5,2 and satisfies the\ncondition. This is the minimum possible number, so the answer is 2.\n\n* * *"}, {"input": "2\n    1 2", "output": "1\n    \n\nSwapping 1 and 2 satisfies the condition.\n\n* * *"}, {"input": "2\n    2 1", "output": "0\n    \n\nThe condition is already satisfied initially.\n\n* * *"}, {"input": "9\n    1 2 4 9 5 8 7 3 6", "output": "3"}]