MOD = 10**9 + 7
N,M = map(int, input().split())
a = [int(input()) for _ in range(M)]

aa = [True] * (N+1)
for i in a:
    aa[i] = False

dp = [0] * (N+1)
dp[0] = 1
if aa[1]:
    dp[1] = 1

for i in range(2,N+1):
    if (aa[i] == False):
        dp[i] = 0
        continue
    dp[i] = dp[i-1] + dp[i-2]
    dp[i] =  dp[i] % MOD
print(dp[N]) MOD = 10**9 + 7 MOD 10**9 + 7 10**9 10 9 7 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 a = [int(input()) for _ in range(M)] a [int(input()) for _ in range(M)] aa = [True] * (N+1) aa [True] * (N+1) [True] True N+1 N 1 for i in a:
    aa[i] = False i a aa[i] = False aa[i] aa i False dp = [0] * (N+1) dp [0] * (N+1) [0] 0 N+1 N 1 dp[0] = 1 dp[0] dp 0 1 if aa[1]:
    dp[1] = 1 aa[1] aa 1 dp[1] = 1 dp[1] dp 1 1 for i in range(2,N+1):
    if (aa[i] == False):
        dp[i] = 0
        continue
    dp[i] = dp[i-1] + dp[i-2]
    dp[i] =  dp[i] % MOD i range(2,N+1) range 2 N+1 N 1 if (aa[i] == False):
        dp[i] = 0
        continue
     aa[i] == False aa[i] aa i False 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 dp[i] =  dp[i] % MOD dp[i] dp i dp[i] % MOD dp[i] dp i MOD print(dp[N]) print dp[N] dp N MOD = 10**9 + 7 10**9 + 7 MOD dp = [0] * (N+1) [0] * (N+1) dp aa = [True] * (N+1) [True] * (N+1) aa M = map(int, input().split()) map(int, input().split()) M a = [int(input()) for _ in range(M)] [int(input()) for _ in range(M)] a N,M = map(int, input().split()) map(int, input().split()) N
MOD = 10**9 + 7
N,M = map(int, input().split())
a = [int(input()) for _ in range(M)]

aa = [True] * (N+1)
for i in a:
    aa[i] = False

dp = [0] * (N+1)
dp[0] = 1
if aa[1]:
    dp[1] = 1

for i in range(2,N+1):
    if (aa[i] == False):
        dp[i] = 0
        continue
    dp[i] = dp[i-1] + dp[i-2]
    dp[i] =  dp[i] % MOD
print(dp[N])
