n, m = map(int, input().split())
A = []; broken = [True] * n
for i in range(m):
    a = int(input())
    A.append(a)
    broken[a] = False 
dp = [0] * (n+1)
dp[0] = 1
mod = 10**9 + 7
for i in range(1, n+1):
    if broken[i-1] :
        dp[i] += dp[i-1]
    if i >= 2 and broken[i-2] :
        dp[i] += dp[i-2]
    dp[i] %= mod
print(dp[n])
    
 n, m = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split m A = [] A [] broken = [True] * n broken [True] * n [True] True n for i in range(m):
    a = int(input())
    A.append(a)
    broken[a] = False  i range(m) range m a = int(input()) a int(input()) int input() input A.append(a) A.append A append a broken[a] = False broken[a] broken a False dp = [0] * (n+1) dp [0] * (n+1) [0] 0 n+1 n 1 dp[0] = 1 dp[0] dp 0 1 mod = 10**9 + 7 mod 10**9 + 7 10**9 10 9 7 for i in range(1, n+1):
    if broken[i-1] :
        dp[i] += dp[i-1]
    if i >= 2 and broken[i-2] :
        dp[i] += dp[i-2]
    dp[i] %= mod i range(1, n+1) range 1 n+1 n 1 if broken[i-1] :
        dp[i] += dp[i-1]
     broken[i-1] broken i-1 i 1 dp[i] += dp[i-1] dp[i] dp i dp[i-1] dp i-1 i 1 if i >= 2 and broken[i-2] :
        dp[i] += dp[i-2]
     i >= 2 and broken[i-2] i >= 2 i 2 broken[i-2] broken i-2 i 2 dp[i] += dp[i-2] dp[i] dp i dp[i-2] dp i-2 i 2 dp[i] %= mod dp[i] dp i mod print(dp[n]) print dp[n] dp n a = int(input()) int(input()) a dp = [0] * (n+1) [0] * (n+1) dp A = [] [] A m = map(int, input().split()) map(int, input().split()) m broken = [True] * n [True] * n broken n, m = map(int, input().split()) map(int, input().split()) n mod = 10**9 + 7 10**9 + 7 mod
n, m = map(int, input().split())
A = []; broken = [True] * n
for i in range(m):
    a = int(input())
    A.append(a)
    broken[a] = False 
dp = [0] * (n+1)
dp[0] = 1
mod = 10**9 + 7
for i in range(1, n+1):
    if broken[i-1] :
        dp[i] += dp[i-1]
    if i >= 2 and broken[i-2] :
        dp[i] += dp[i-2]
    dp[i] %= mod
print(dp[n])
    

