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

a = [int(eval(input())) for i in range(m)]

dp = [float("inf")] * (n+1)

dp[0] = 1

dp[1] = 1

for i in a:

    dp[i] = 0

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

    dp[i] = min(dp[i], (dp[i-1] + dp[i-2]))

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

a = [int(eval(input())) for i in range(m)]

dp = [float("inf")] * (n+1)

dp[0] = 1

dp[1] = 1

for i in a:

    dp[i] = 0

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

    dp[i] = min(dp[i], (dp[i-1] + dp[i-2])%(10**9+7))

print((dp[n]))

n, m = list(map(int, input().split()))
a = [int(eval(input())) for i in range(m)]
dp = [float("inf")] * (n + 1)
dp[0] = 1
dp[1] = 1
for i in a:
    dp[i] = 0
for i in range(2, n + 1):
    dp[i] = min(dp[i], (dp[i - 1] + dp[i - 2]))
print((dp[n] % 1000000007))

n, m = list(map(int, input().split()))
a = [int(eval(input())) for i in range(m)]
dp = [float("inf")] * (n + 1)
dp[0] = 1
dp[1] = 1
for i in a:
    dp[i] = 0
for i in range(2, n + 1):
    dp[i] = min(dp[i], (dp[i - 1] + dp[i - 2]) % (10**9 + 7))
print((dp[n]))

-    dp[i] = min(dp[i], (dp[i - 1] + dp[i - 2])) -print((dp[n] % 1000000007)) +    dp[i] = min(dp[i], (dp[i - 1] + dp[i - 2]) % (10**9 + 7)) +print((dp[n]))