n, m = map(int, input().split())
a = list(int(input()) for _ in range(m))

MOD = 10**9 + 7
is_broken = [0] * (n+1)
dp = [0] * (n+1)
dp[0] = 1

for x in a:
    is_broken[x] = 1

for i in range(n):
    for j in range(i+1, min(n, i+2) + 1):
        if not is_broken[j]:
            dp[j] += dp[i]
            dp[j] %= MOD

print(dp[n]) n, m = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split m a = list(int(input()) for _ in range(m)) a list(int(input()) for _ in range(m)) list int(input()) int input() input MOD = 10**9 + 7 MOD 10**9 + 7 10**9 10 9 7 is_broken = [0] * (n+1) is_broken [0] * (n+1) [0] 0 n+1 n 1 dp = [0] * (n+1) dp [0] * (n+1) [0] 0 n+1 n 1 dp[0] = 1 dp[0] dp 0 1 for x in a:
    is_broken[x] = 1 x a is_broken[x] = 1 is_broken[x] is_broken x 1 for i in range(n):
    for j in range(i+1, min(n, i+2) + 1):
        if not is_broken[j]:
            dp[j] += dp[i]
            dp[j] %= MOD i range(n) range n for j in range(i+1, min(n, i+2) + 1):
        if not is_broken[j]:
            dp[j] += dp[i]
            dp[j] %= MOD j range(i+1, min(n, i+2) + 1) range i+1 i 1 min(n, i+2) + 1 min(n, i+2) min n i+2 i 2 1 if not is_broken[j]:
            dp[j] += dp[i]
            dp[j] %= MOD not is_broken[j] is_broken[j] is_broken j dp[j] += dp[i] dp[j] dp j dp[i] dp i dp[j] %= MOD dp[j] dp j MOD print(dp[n]) print dp[n] dp n n, m = map(int, input().split()) map(int, input().split()) n m = map(int, input().split()) map(int, input().split()) m dp = [0] * (n+1) [0] * (n+1) dp is_broken = [0] * (n+1) [0] * (n+1) is_broken MOD = 10**9 + 7 10**9 + 7 MOD a = list(int(input()) for _ in range(m)) list(int(input()) for _ in range(m)) a
n, m = map(int, input().split())
a = list(int(input()) for _ in range(m))

MOD = 10**9 + 7
is_broken = [0] * (n+1)
dp = [0] * (n+1)
dp[0] = 1

for x in a:
    is_broken[x] = 1

for i in range(n):
    for j in range(i+1, min(n, i+2) + 1):
        if not is_broken[j]:
            dp[j] += dp[i]
            dp[j] %= MOD

print(dp[n])
