N, M = map(int, input().split())
#リスト内包表記でaに入れる
a = [int(input()) for _ in range(M)]

#MODに1000000007を入れる
MOD = 10**9 + 7
#Zに集合を作成する
Z = set(a)
 
#i段目までにたどりつく方法を順に求める
dp = [0 for _ in range(N + 1)]
#0段目の場合1とする
dp[0] = 1
#1段目の場合は集合の中に1が含まれていないかどうか、含まれていない:1、含まれている:0
dp[1] = int(1 not in Z)
#2段目以降の場合
for i in range(2, N + 1):
  #集合の中にiが含まれていない場合
    if i not in Z:
      #i段目に1段か2段で上ってきた経路数を足して、MODで割る、dp[i]に蓄積する
        dp[i] = (dp[i - 1] + dp[i - 2]) % MOD
#ansに答えを入れる
ans = dp[i]
print(dp[i])