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

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

issafe = [True] * (N + 1)

for i in range(M):

    issafe[int(eval(input()))] = False



dp = [0] * (N + 1)

dp[0] = 1

if issafe[1]:

    dp[1] = 1



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

    if issafe[i - 1]:

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

    if issafe[i - 2]:

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



mod = 1000000007

print((dp[N] % mod))
N, M = list(map(int, input().split()))

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

issafe = [True] * (N + 1)

for i in range(M):

    issafe[int(eval(input()))] = False



dp = [0] * (N + 1)

dp[0] = 1

if issafe[1]:

    dp[1] = 1



mod = 1000000007

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

    if issafe[i - 1]:

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

    if issafe[i - 2]:

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

    dp[i] = dp[i] %mod



print((dp[N]))
N, M = list(map(int, input().split()))
# a = [int(input()) for _ in range(M)]
issafe = [True] * (N + 1)
for i in range(M):
    issafe[int(eval(input()))] = False
dp = [0] * (N + 1)
dp[0] = 1
if issafe[1]:
    dp[1] = 1
for i in range(2, N + 1):
    if issafe[i - 1]:
        dp[i] += dp[i - 1]
    if issafe[i - 2]:
        dp[i] += dp[i - 2]
mod = 1000000007
print((dp[N] % mod))

N, M = list(map(int, input().split()))
# a = [int(input()) for _ in range(M)]
issafe = [True] * (N + 1)
for i in range(M):
    issafe[int(eval(input()))] = False
dp = [0] * (N + 1)
dp[0] = 1
if issafe[1]:
    dp[1] = 1
mod = 1000000007
for i in range(2, N + 1):
    if issafe[i - 1]:
        dp[i] += dp[i - 1]
    if issafe[i - 2]:
        dp[i] += dp[i - 2]
    dp[i] = dp[i] % mod
print((dp[N]))

+mod = 1000000007 -mod = 1000000007 -print((dp[N] % mod)) +    dp[i] = dp[i] % mod +print((dp[N]))