n, m = map(int, input().split())
an = [int(input()) for _ in range(m)]

dp = [0 for _ in range(n+1)]
dp[0] = 1
mod = 10**9 + 7

if m == 0:
    dp[0] = 1
    dp[1] = 1
    for i in range(2, n+1):
        dp[i] = (dp[i-1] + dp[i-2]) % mod
    print(dp[n])
    exit()

if an[0] == 1:
    dp[1] = 0
    a = 1
    if len(an) == 1:
        a = 0
else:
    dp[1] = 1
    a = 0

for i in range(2, n+1):
    if i == an[a]:
        dp[i] = 0
        a += 1
        if a == len(an):
            a -= 1
    else:
        dp[i] = (dp[i-1] + dp[i-2]) % mod

print(dp[n]) n, m = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split m int(input()) for _ in range(m) for _ in range(m) _ range(m) range m for _ in range(m) int(input()) int input() input an = [int(input()) for _ in range(m)] an [int(input()) for _ in range(m)] 0 for _ in range(n+1) for _ in range(n+1) _ range(n+1) range n+1 n 1 for _ in range(n+1) 0 dp = [0 for _ in range(n+1)] dp [0 for _ in range(n+1)] dp[0] = 1 dp[0] dp 0 1 mod = 10**9 + 7 mod 10**9 + 7 10**9 10 9 7 if m == 0:
    dp[0] = 1
    dp[1] = 1
    for i in range(2, n+1):
        dp[i] = (dp[i-1] + dp[i-2]) % mod
    print(dp[n])
    exit() m == 0 m 0 dp[0] = 1 dp[0] dp 0 1 dp[1] = 1 dp[1] dp 1 1 for i in range(2, n+1):
        dp[i] = (dp[i-1] + dp[i-2]) % mod
     i range(2, n+1) range 2 n+1 n 1 dp[i] = (dp[i-1] + dp[i-2]) % mod dp[i] dp i (dp[i-1] + dp[i-2]) % mod dp[i-1] + dp[i-2] dp[i-1] dp i-1 i 1 dp[i-2] dp i-2 i 2 mod print(dp[n]) print dp[n] dp n exit() exit if an[0] == 1:
    dp[1] = 0
    a = 1
    if len(an) == 1:
        a = 0
else:
    dp[1] = 1
    a = 0 an[0] == 1 an[0] an 0 1 dp[1] = 0 dp[1] dp 1 0 a = 1 a 1 if len(an) == 1:
        a = 0 len(an) == 1 len(an) len an 1 a = 0 a 0 dp[1] = 1 dp[1] dp 1 1 a = 0 a 0 for i in range(2, n+1):
    if i == an[a]:
        dp[i] = 0
        a += 1
        if a == len(an):
            a -= 1
    else:
        dp[i] = (dp[i-1] + dp[i-2]) % mod i range(2, n+1) range 2 n+1 n 1 if i == an[a]:
        dp[i] = 0
        a += 1
        if a == len(an):
            a -= 1
    else:
        dp[i] = (dp[i-1] + dp[i-2]) % mod i == an[a] i an[a] an a dp[i] = 0 dp[i] dp i 0 a += 1 a 1 if a == len(an):
            a -= 1
     a == len(an) a len(an) len an a -= 1 a 1 dp[i] = (dp[i-1] + dp[i-2]) % mod dp[i] dp i (dp[i-1] + dp[i-2]) % mod dp[i-1] + dp[i-2] dp[i-1] dp i-1 i 1 dp[i-2] dp i-2 i 2 mod print(dp[n]) print dp[n] dp n m = map(int, input().split()) map(int, input().split()) m n, m = map(int, input().split()) map(int, input().split()) n dp = [0 for _ in range(n+1)] [0 for _ in range(n+1)] dp a = 0 0 a a = 0 0 a a = 1 1 a an = [int(input()) for _ in range(m)] [int(input()) for _ in range(m)] an a += 1 1 a mod = 10**9 + 7 10**9 + 7 mod a -= 1 1 a
n, m = map(int, input().split())
an = [int(input()) for _ in range(m)]

dp = [0 for _ in range(n+1)]
dp[0] = 1
mod = 10**9 + 7

if m == 0:
    dp[0] = 1
    dp[1] = 1
    for i in range(2, n+1):
        dp[i] = (dp[i-1] + dp[i-2]) % mod
    print(dp[n])
    exit()

if an[0] == 1:
    dp[1] = 0
    a = 1
    if len(an) == 1:
        a = 0
else:
    dp[1] = 1
    a = 0

for i in range(2, n+1):
    if i == an[a]:
        dp[i] = 0
        a += 1
        if a == len(an):
            a -= 1
    else:
        dp[i] = (dp[i-1] + dp[i-2]) % mod

print(dp[n])
