#coding:utf-8
#DPの練習

n, m = map(int, input().split())
a = [int(input()) for i in range(m)]

#壊れている階段とそうでない階段を判別するリスト
broken = [0] * (n+1)

#段ごとに何通りかを集計するためのリスト
dp = [0] * (n+1)
#0段目は必ず1通りしかない
dp[0] = 1


#壊れている階段をマークする
for i in range(m):
    broken[a[i]] = 1

#1段目から壊れている可能性があるので場合分け
if broken[1] == 1:
    dp[2] = 0
else:
    #1段目が無事な場合は1通り
    dp[2] = 1

#3段目以降
for i in range(2, n+1):
    if broken[i] == 1:
        #壊れていた場合次の段を確認する
        continue
    dp[i] = dp[i-1] + dp[i-2]
    dp[i] = dp[i] % 1000000007

print(dp[n])

