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

set_a = set([int(eval(input())) for _ in range(M)])

MOD = 10**9 + 7



dp = [0] * (N + 1)

dp[0] = 1

dp[1] = 0 if 1 in set_a else 1

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

    dp[i] = 0 if i in set_a else dp[i-1] + dp[i-2]

    dp[i] %= MOD

ans = dp[N] % MOD



print(ans)
import sys



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

# set_a = set([int(input()) for _ in range(M)])

if M > 0:

    set_a = set(map(int, sys.stdin))

else:

    set_a = set()

MOD = 10**9 + 7



dp = [0] * (N + 1)

dp[0] = 1

dp[1] = 0 if 1 in set_a else 1

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

    dp[i] = 0 if i in set_a else (dp[i-1] + dp[i-2]) % MOD

ans = dp[N]

print(ans)
N, M = list(map(int, input().split()))
set_a = set([int(eval(input())) for _ in range(M)])
MOD = 10**9 + 7
dp = [0] * (N + 1)
dp[0] = 1
dp[1] = 0 if 1 in set_a else 1
for i in range(2, N + 1):
    dp[i] = 0 if i in set_a else dp[i - 1] + dp[i - 2]
    dp[i] %= MOD
ans = dp[N] % MOD
print(ans)

import sys

N, M = list(map(int, input().split()))
# set_a = set([int(input()) for _ in range(M)])
if M > 0:
    set_a = set(map(int, sys.stdin))
else:
    set_a = set()
MOD = 10**9 + 7
dp = [0] * (N + 1)
dp[0] = 1
dp[1] = 0 if 1 in set_a else 1
for i in range(2, N + 1):
    dp[i] = 0 if i in set_a else (dp[i - 1] + dp[i - 2]) % MOD
ans = dp[N]
print(ans)

+import sys + -set_a = set([int(eval(input())) for _ in range(M)]) +# set_a = set([int(input()) for _ in range(M)]) +if M > 0: +    set_a = set(map(int, sys.stdin)) +else: +    set_a = set() -    dp[i] = 0 if i in set_a else dp[i - 1] + dp[i - 2] -    dp[i] %= MOD -ans = dp[N] % MOD +    dp[i] = 0 if i in set_a else (dp[i - 1] + dp[i - 2]) % MOD +ans = dp[N]