N, M = (int(s) for s in input().split())

broken = {int(input()) for _ in range(M)}

dp = [1 for _ in range(N+1)]

for k in range(1, N+1):
  if k in broken:
    dp[k] = 0
  elif k > 1:
    dp[k] = dp[k-1] + dp[k-2]

print(dp[N] % 1000000007) int(s) for s in input().split() for s in input().split() s input().split() ().split () input split for s in input().split() int(s) int s N, M = (int(s) for s in input().split()) N (int(s) for s in 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 broken = {int(input()) for _ in range(M)} broken 1 for _ in range(N+1) for _ in range(N+1) _ range(N+1) range N+1 N 1 for _ in range(N+1) 1 dp = [1 for _ in range(N+1)] dp [1 for _ in range(N+1)] for k in range(1, N+1):
  if k in broken:
    dp[k] = 0
  elif k > 1:
    dp[k] = dp[k-1] + dp[k-2] k range(1, N+1) range 1 N+1 N 1 if k in broken:
    dp[k] = 0
  elif k > 1:
    dp[k] = dp[k-1] + dp[k-2] k in broken k broken dp[k] = 0 dp[k] dp k 0 elif k > 1:
    dp[k] = dp[k-1] + dp[k-2] k > 1 k 1 dp[k] = dp[k-1] + dp[k-2] dp[k] dp k dp[k-1] + dp[k-2] dp[k-1] dp k-1 k 1 dp[k-2] dp k-2 k 2 print(dp[N] % 1000000007) print dp[N] % 1000000007 dp[N] dp N 1000000007 dp = [1 for _ in range(N+1)] [1 for _ in range(N+1)] dp broken = {int(input()) for _ in range(M)} broken N, M = (int(s) for s in input().split()) (int(s) for s in input().split()) N M = (int(s) for s in input().split()) (int(s) for s in input().split()) M
N, M = (int(s) for s in input().split())

broken = {int(input()) for _ in range(M)}

dp = [1 for _ in range(N+1)]

for k in range(1, N+1):
  if k in broken:
    dp[k] = 0
  elif k > 1:
    dp[k] = dp[k-1] + dp[k-2]

print(dp[N] % 1000000007)