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

A = set([int(eval(input())) for _ in range(m)])



MOD = 10 ** 9 + 7

dp = [0] * (n + 1)



dp[0] = 1

if 1 not in A:

  dp[1] = 1



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

  if i not in A:

    dp[i] = (dp[i - 1] + dp[i - 2]) % MOD



print((dp[-1]))
n, m = list(map(int, input().split()))

A = set([int(eval(input())) for _ in range(m)])

MOD = 10 ** 9 + 7



dp = [0] * (n + 1)

dp[0] = 1



for i in range(n + 1):

  if i > 1:

    if i not in A:

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

  if i > 0:

    if i not in A:

      dp[i] += dp[i - 1]

  dp[i] %= MOD



print((dp[-1]))
n, m = list(map(int, input().split()))
A = set([int(eval(input())) for _ in range(m)])
MOD = 10**9 + 7
dp = [0] * (n + 1)
dp[0] = 1
if 1 not in A:
    dp[1] = 1
for i in range(2, n + 1):
    if i not in A:
        dp[i] = (dp[i - 1] + dp[i - 2]) % MOD
print((dp[-1]))

n, m = list(map(int, input().split()))
A = set([int(eval(input())) for _ in range(m)])
MOD = 10**9 + 7
dp = [0] * (n + 1)
dp[0] = 1
for i in range(n + 1):
    if i > 1:
        if i not in A:
            dp[i] += dp[i - 2]
    if i > 0:
        if i not in A:
            dp[i] += dp[i - 1]
    dp[i] %= MOD
print((dp[-1]))

-if 1 not in A: -    dp[1] = 1 -for i in range(2, n + 1): -    if i not in A: -        dp[i] = (dp[i - 1] + dp[i - 2]) % MOD +for i in range(n + 1): +    if i > 1: +        if i not in A: +            dp[i] += dp[i - 2] +    if i > 0: +        if i not in A: +            dp[i] += dp[i - 1] +    dp[i] %= MOD