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