MOD=10**9+7

N,M=list(map(int,input().split()))

dp=[1]*(N+1)

for i in range(M):

  dp[int(eval(input()))]=0

for n in range(2,N+1):

  if dp[n]!=0:

    dp[n]=(dp[n-1]+dp[n-2])

print((dp[N]%MOD))

MOD = 10**9 + 7

n, m = list(map(int, input().split()))



ban = [False] * (n + 1)#踏めない階段の配列、最初は全てOK



for i in range(m):

    a = int(eval(input()))

    ban[a] = True#壊れている段をTrueに変える



dp = [0] * (n+1)#DPテーブルは余裕が必要

dp[0] = 1#最初は１通り

for i in range(n):

    dp[i] %= MOD#MODで割っておく

    if(ban[i]):dp[i] = 0#壊れている段に行く方法は無い

    if i + 1 <= n:#上がれるのは１段、または２段

        dp[i+1] += dp[i]#配る配列

    if i + 2 <= n:

        dp[i+2] += dp[i]



print((dp[n] % MOD))#n段目に行くのは何通りか
MOD = 10**9 + 7
N, M = list(map(int, input().split()))
dp = [1] * (N + 1)
for i in range(M):
    dp[int(eval(input()))] = 0
for n in range(2, N + 1):
    if dp[n] != 0:
        dp[n] = dp[n - 1] + dp[n - 2]
print((dp[N] % MOD))

MOD = 10**9 + 7
n, m = list(map(int, input().split()))
ban = [False] * (n + 1)  # 踏めない階段の配列、最初は全てOK
for i in range(m):
    a = int(eval(input()))
    ban[a] = True  # 壊れている段をTrueに変える
dp = [0] * (n + 1)  # DPテーブルは余裕が必要
dp[0] = 1  # 最初は１通り
for i in range(n):
    dp[i] %= MOD  # MODで割っておく
    if ban[i]:
        dp[i] = 0  # 壊れている段に行く方法は無い
    if i + 1 <= n:  # 上がれるのは１段、または２段
        dp[i + 1] += dp[i]  # 配る配列
    if i + 2 <= n:
        dp[i + 2] += dp[i]
print((dp[n] % MOD))  # n段目に行くのは何通りか

-N, M = list(map(int, input().split())) -dp = [1] * (N + 1) -for i in range(M): -    dp[int(eval(input()))] = 0 -for n in range(2, N + 1): -    if dp[n] != 0: -        dp[n] = dp[n - 1] + dp[n - 2] -print((dp[N] % MOD)) +n, m = list(map(int, input().split())) +ban = [False] * (n + 1)  # 踏めない階段の配列、最初は全てOK +for i in range(m): +    a = int(eval(input())) +    ban[a] = True  # 壊れている段をTrueに変える +dp = [0] * (n + 1)  # DPテーブルは余裕が必要 +dp[0] = 1  # 最初は１通り +for i in range(n): +    dp[i] %= MOD  # MODで割っておく +    if ban[i]: +        dp[i] = 0  # 壊れている段に行く方法は無い +    if i + 1 <= n:  # 上がれるのは１段、または２段 +        dp[i + 1] += dp[i]  # 配る配列 +    if i + 2 <= n: +        dp[i + 2] += dp[i] +print((dp[n] % MOD))  # n段目に行くのは何通りか