n, m = map(int, input().split())
a = [int(input()) for i in range(m)]
l = [1] * (n+1)
for j in a:
  l[j] = 0
x = 10 ** 9 + 7
if m > n // 2:
  print(0)
else:
  dp = [0] * (n+1)
  dp[0] = 1
  if 1 not in a:
    dp[1] = 1
  for i in range(2, n+1):
    if l[i]:
      dp[i] = (dp[i-1] + dp[i-2]) % x
  print(dp[-1]) n, m = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split m int(input()) for i in range(m) for i in range(m) i range(m) range m for i in range(m) int(input()) int input() input a = [int(input()) for i in range(m)] a [int(input()) for i in range(m)] l = [1] * (n+1) l [1] * (n+1) [1] 1 n+1 n 1 for j in a:
  l[j] = 0 j a l[j] = 0 l[j] l j 0 x = 10 ** 9 + 7 x 10 ** 9 + 7 10 ** 9 10 9 7 if m > n // 2:
  print(0)
else:
  dp = [0] * (n+1)
  dp[0] = 1
  if 1 not in a:
    dp[1] = 1
  for i in range(2, n+1):
    if l[i]:
      dp[i] = (dp[i-1] + dp[i-2]) % x
  print(dp[-1]) m > n // 2 m n // 2 n 2 print(0) print 0 dp = [0] * (n+1) dp [0] * (n+1) [0] 0 n+1 n 1 dp[0] = 1 dp[0] dp 0 1 if 1 not in a:
    dp[1] = 1
   1 not in a 1 a dp[1] = 1 dp[1] dp 1 1 for i in range(2, n+1):
    if l[i]:
      dp[i] = (dp[i-1] + dp[i-2]) % x
   i range(2, n+1) range 2 n+1 n 1 if l[i]:
      dp[i] = (dp[i-1] + dp[i-2]) % x
   l[i] l i dp[i] = (dp[i-1] + dp[i-2]) % x dp[i] dp i (dp[i-1] + dp[i-2]) % x dp[i-1] + dp[i-2] dp[i-1] dp i-1 i 1 dp[i-2] dp i-2 i 2 x print(dp[-1]) print dp[-1] dp -1 x = 10 ** 9 + 7 10 ** 9 + 7 x dp = [0] * (n+1) [0] * (n+1) dp n, m = map(int, input().split()) map(int, input().split()) n a = [int(input()) for i in range(m)] [int(input()) for i in range(m)] a l = [1] * (n+1) [1] * (n+1) l m = map(int, input().split()) map(int, input().split()) m
n, m = map(int, input().split())
a = [int(input()) for i in range(m)]
l = [1] * (n+1)
for j in a:
  l[j] = 0
x = 10 ** 9 + 7
if m > n // 2:
  print(0)
else:
  dp = [0] * (n+1)
  dp[0] = 1
  if 1 not in a:
    dp[1] = 1
  for i in range(2, n+1):
    if l[i]:
      dp[i] = (dp[i-1] + dp[i-2]) % x
  print(dp[-1])