object Main {

  def main(args: Array[String]): Unit = {
    val sc = new java.util.Scanner(System.in)

    val N, M = sc.nextInt()
    val A = Array.fill(M)(sc.nextInt())

    // dp(i) := i段目にたどり着くための移動方法が何通りか？
    // 最終的にdp(N) を求める
    val dp = Array.fill(N+1)(0L)
    A.foreach { i =>
      dp(i) = -1
    }

    dp(0) = 1 // 0番目は1通り
    if (dp(1) == -1)
      dp(1) = 0
    else
      dp(1) = dp(0)

    (1 until N) foreach { i =>
      if (dp(i+1) == -1) // 壊れているので0通り
        dp(i+1) = 0
      else // 壊れていないので, 一個前と二個前のをたす
        dp(i+1) = dp(i) + dp(i-1)
    }
    println(dp(N) % 1000000007)
  }

}