N,M = map(int,input().split())
A = set([]); MOD = pow(10,9)+7
for i in range(M):
  a = int(input())
  A.add(a-1)
dp = [[0]*2 for _ in range(N)] #dp[i][j] i段目(0index)にj=0最後1段でj=1最後2段できた。
if 0 not in A:
  dp[0][0] = 1
if N == 1:
  print(sum(dp[0]))
  exit()
if 1 not in A:
  dp[1][0] = dp[0][0]+dp[0][1]
  dp[1][1] = 1
for i in range(2,N):
  if i in A:
    continue
  dp[i][0] = (dp[i-1][0]+dp[i-1][1])%MOD
  dp[i][1] = (dp[i-2][0]+dp[i-2][1])%MOD
ans = sum(dp[N-1])%MOD
#print(dp)
print(ans) N,M = map(int,input().split()) N map(int,input().split()) map int input().split() ().split () input split M A = set([]) A set([]) set [] MOD = pow(10,9)+7 MOD pow(10,9)+7 pow(10,9) pow 10 9 7 for i in range(M):
  a = int(input())
  A.add(a-1) i range(M) range M a = int(input()) a int(input()) int input() input A.add(a-1) A.add A add a-1 a 1 [0]*2 for _ in range(N) for _ in range(N) _ range(N) range N for _ in range(N) [0]*2 [0] 0 2 dp = [[0]*2 for _ in range(N)] dp [[0]*2 for _ in range(N)] if 0 not in A:
  dp[0][0] = 1 0 not in A 0 A dp[0][0] = 1 dp[0][0] [0] dp 0 0 1 if N == 1:
  print(sum(dp[0]))
  exit() N == 1 N 1 print(sum(dp[0])) print sum(dp[0]) sum dp[0] dp 0 exit() exit if 1 not in A:
  dp[1][0] = dp[0][0]+dp[0][1]
  dp[1][1] = 1 1 not in A 1 A dp[1][0] = dp[0][0]+dp[0][1] dp[1][0] [1] dp 1 0 dp[0][0]+dp[0][1] dp[0][0] [0] dp 0 0 dp[0][1] [0] dp 0 1 dp[1][1] = 1 dp[1][1] [1] dp 1 1 1 for i in range(2,N):
  if i in A:
    continue
  dp[i][0] = (dp[i-1][0]+dp[i-1][1])%MOD
  dp[i][1] = (dp[i-2][0]+dp[i-2][1])%MOD i range(2,N) range 2 N if i in A:
    continue
   i in A i A continue dp[i][0] = (dp[i-1][0]+dp[i-1][1])%MOD dp[i][0] [i] dp i 0 (dp[i-1][0]+dp[i-1][1])%MOD dp[i-1][0]+dp[i-1][1] dp[i-1][0] [i-1] dp i-1 i 1 0 dp[i-1][1] [i-1] dp i-1 i 1 1 MOD dp[i][1] = (dp[i-2][0]+dp[i-2][1])%MOD dp[i][1] [i] dp i 1 (dp[i-2][0]+dp[i-2][1])%MOD dp[i-2][0]+dp[i-2][1] dp[i-2][0] [i-2] dp i-2 i 2 0 dp[i-2][1] [i-2] dp i-2 i 2 1 MOD ans = sum(dp[N-1])%MOD ans sum(dp[N-1])%MOD sum(dp[N-1]) sum dp[N-1] dp N-1 N 1 MOD print(ans) print ans a = int(input()) int(input()) a N,M = map(int,input().split()) map(int,input().split()) N ans = sum(dp[N-1])%MOD sum(dp[N-1])%MOD ans dp = [[0]*2 for _ in range(N)] [[0]*2 for _ in range(N)] dp MOD = pow(10,9)+7 pow(10,9)+7 MOD M = map(int,input().split()) map(int,input().split()) M A = set([]) set([]) A
N,M = map(int,input().split())
A = set([]); MOD = pow(10,9)+7
for i in range(M):
  a = int(input())
  A.add(a-1)
dp = [[0]*2 for _ in range(N)] #dp[i][j] i段目(0index)にj=0最後1段でj=1最後2段できた。
if 0 not in A:
  dp[0][0] = 1
if N == 1:
  print(sum(dp[0]))
  exit()
if 1 not in A:
  dp[1][0] = dp[0][0]+dp[0][1]
  dp[1][1] = 1
for i in range(2,N):
  if i in A:
    continue
  dp[i][0] = (dp[i-1][0]+dp[i-1][1])%MOD
  dp[i][1] = (dp[i-2][0]+dp[i-2][1])%MOD
ans = sum(dp[N-1])%MOD
#print(dp)
print(ans)