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

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



dp = [0] * (n + 1)

mod = pow(10, 9) + 7



dp[0] = 1

if 1 in list_score:

    dp[1] = 0

else:

    dp[1] = 1



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

    if i not in list_score:

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

        dp[i] %= mod



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

set_A = set()

dp = [0]*n

mod = pow(10, 9) + 7



for _ in range(m):

    set_A.add(int(eval(input())))



if 1 not in set_A:

    dp[0] = 1

if 2 not in set_A and n != 1:

    dp[1] = 1 + dp[0]



for i in range(2, n):

    if i + 1 not in set_A:

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



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

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

-list_score = set([int(eval(input())) for _ in range(m)]) -dp = [0] * (n + 1) +set_A = set() +dp = [0] * n -dp[0] = 1 -if 1 in list_score: -    dp[1] = 0 -else: -    dp[1] = 1 -for i in range(2, n + 1): -    if i not in list_score: -        dp[i] = dp[i - 1] + dp[i - 2] -        dp[i] %= mod -print((dp[n])) +for _ in range(m): +    set_A.add(int(eval(input()))) +if 1 not in set_A: +    dp[0] = 1 +if 2 not in set_A and n != 1: +    dp[1] = 1 + dp[0] +for i in range(2, n): +    if i + 1 not in set_A: +        dp[i] += (dp[i - 1] + dp[i - 2]) % mod +print((dp[n - 1]))