n, m = list(map(int, input().split()))

a = []

for i in range(m):

  a.append(int(eval(input())))

ans = 0

flag = 0

a = set(a)



#フィボナッチ数列の初期値を調節

dp = [0] * (n+1)

dp[0] = 1

if 1 in a:

  dp[1] = 0

else:

  dp[1] = 1

  

for i in range(2, n+1):

  if dp[i-2] == 0 and dp[i-1] == 0:

    ans = 0

    flag = 1

    break

  elif i in a:

    continue

  else:

    dp[i] = dp[i-1] + dp[i-2]

if flag == 0:

  ans = dp[n]

print((ans%(10**9+7)))
n, m = list(map(int, input().split()))

a = []

for i in range(m):

  a.append(int(eval(input())))

ans = 0

flag = 0

a = set(a)



#フィボナッチ数列の初期値を調節

dp = [0] * (n+1)

dp[0] = 1

if 1 in a:

  dp[1] = 0

else:

  dp[1] = 1

  

for i in range(2, n+1):

  if dp[i-2] == 0 and dp[i-1] == 0:

    ans = 0

    flag = 1

    break

  elif i in a:

    continue

  else:

    dp[i] = dp[i-1] + dp[i-2]

    dp[i] = dp[i] % (10**9+7)

if flag == 0:

  ans = dp[n]

print(ans)
n, m = list(map(int, input().split()))
a = []
for i in range(m):
    a.append(int(eval(input())))
ans = 0
flag = 0
a = set(a)
# フィボナッチ数列の初期値を調節
dp = [0] * (n + 1)
dp[0] = 1
if 1 in a:
    dp[1] = 0
else:
    dp[1] = 1
for i in range(2, n + 1):
    if dp[i - 2] == 0 and dp[i - 1] == 0:
        ans = 0
        flag = 1
        break
    elif i in a:
        continue
    else:
        dp[i] = dp[i - 1] + dp[i - 2]
if flag == 0:
    ans = dp[n]
print((ans % (10**9 + 7)))

n, m = list(map(int, input().split()))
a = []
for i in range(m):
    a.append(int(eval(input())))
ans = 0
flag = 0
a = set(a)
# フィボナッチ数列の初期値を調節
dp = [0] * (n + 1)
dp[0] = 1
if 1 in a:
    dp[1] = 0
else:
    dp[1] = 1
for i in range(2, n + 1):
    if dp[i - 2] == 0 and dp[i - 1] == 0:
        ans = 0
        flag = 1
        break
    elif i in a:
        continue
    else:
        dp[i] = dp[i - 1] + dp[i - 2]
        dp[i] = dp[i] % (10**9 + 7)
if flag == 0:
    ans = dp[n]
print(ans)

+        dp[i] = dp[i] % (10**9 + 7) -print((ans % (10**9 + 7))) +print(ans)