N, M = map(int, input().split())
isBroken = [0] * (N+1)

for i in range(M):
    a = int(input())
    isBroken[a] = 1

dp = [0 for _ in range(N+2)]
#幻のN+1段目まで生やして、そこの組み合わせをゼロにする

dp[N] = 1
for i in range(N-1, -1, -1):
    if isBroken[i]:
        dp[i] = 0
        continue
    dp[i] = dp[i+1] + dp[i+2]
print(dp[0] % (10**9 + 7)) N, M = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split M isBroken = [0] * (N+1) isBroken [0] * (N+1) [0] 0 N+1 N 1 for i in range(M):
    a = int(input())
    isBroken[a] = 1 i range(M) range M a = int(input()) a int(input()) int input() input isBroken[a] = 1 isBroken[a] isBroken a 1 0 for _ in range(N+2) for _ in range(N+2) _ range(N+2) range N+2 N 2 for _ in range(N+2) 0 dp = [0 for _ in range(N+2)] dp [0 for _ in range(N+2)] dp[N] = 1 dp[N] dp N 1 for i in range(N-1, -1, -1):
    if isBroken[i]:
        dp[i] = 0
        continue
    dp[i] = dp[i+1] + dp[i+2] i range(N-1, -1, -1) range N-1 N 1 -1 -1 if isBroken[i]:
        dp[i] = 0
        continue
     isBroken[i] isBroken i dp[i] = 0 dp[i] dp i 0 continue dp[i] = dp[i+1] + dp[i+2] dp[i] dp i dp[i+1] + dp[i+2] dp[i+1] dp i+1 i 1 dp[i+2] dp i+2 i 2 print(dp[0] % (10**9 + 7)) print dp[0] % (10**9 + 7) dp[0] dp 0 10**9 + 7 10**9 10 9 7 dp = [0 for _ in range(N+2)] [0 for _ in range(N+2)] dp N, M = map(int, input().split()) map(int, input().split()) N isBroken = [0] * (N+1) [0] * (N+1) isBroken a = int(input()) int(input()) a M = map(int, input().split()) map(int, input().split()) M
N, M = map(int, input().split())
isBroken = [0] * (N+1)

for i in range(M):
    a = int(input())
    isBroken[a] = 1

dp = [0 for _ in range(N+2)]
#幻のN+1段目まで生やして、そこの組み合わせをゼロにする

dp[N] = 1
for i in range(N-1, -1, -1):
    if isBroken[i]:
        dp[i] = 0
        continue
    dp[i] = dp[i+1] + dp[i+2]
print(dp[0] % (10**9 + 7))
