# https://atcoder.jp/contests/abc129/tasks/abc129_c

# 典型的なDP



MOD = 10**9 + 7

import numpy as np

# dp[i]をi段目までの通りの数とする。

N, M = list(map(int, input().split()))

to_zero = np.full((N + 1), False, dtype=bool)

for _ in range(M):

    to_zero[int(eval(input()))] = True  # 床が抜けているところ



# dpテーブルの用意

dp = np.full((N + 1), -1, dtype='int64')

dp[0] = 1

dp[1] = 0 if to_zero[1] else 1

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

    dp[i] = 0 if to_zero[i] else dp[i - 2] + dp[i - 1]

    if dp[i] > MOD:

        dp[i] %= MOD



print((dp[-1]))

# https://atcoder.jp/contests/abc129/tasks/abc129_c

# 典型的なDP



MOD = 10**9 + 7

import numpy as np

# dp[i]をi段目までの通りの数とする。

N, M = list(map(int, input().split()))

to_zero = np.full((N + 1), False).tolist()

for _ in range(M):

    to_zero[int(eval(input()))] = True  # 床が抜けているところ



# dpテーブルの用意

dp = np.full((N + 1), -1).tolist()

dp[0] = 1

dp[1] = 0 if to_zero[1] else 1

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

    dp[i] = 0 if to_zero[i] else dp[i - 2] + dp[i - 1]

    if dp[i] > MOD:

        dp[i] %= MOD



print((dp[-1]))

# https://atcoder.jp/contests/abc129/tasks/abc129_c
# 典型的なDP
MOD = 10**9 + 7
import numpy as np

# dp[i]をi段目までの通りの数とする。
N, M = list(map(int, input().split()))
to_zero = np.full((N + 1), False, dtype=bool)
for _ in range(M):
    to_zero[int(eval(input()))] = True  # 床が抜けているところ
# dpテーブルの用意
dp = np.full((N + 1), -1, dtype="int64")
dp[0] = 1
dp[1] = 0 if to_zero[1] else 1
for i in range(2, N + 1):
    dp[i] = 0 if to_zero[i] else dp[i - 2] + dp[i - 1]
    if dp[i] > MOD:
        dp[i] %= MOD
print((dp[-1]))

# https://atcoder.jp/contests/abc129/tasks/abc129_c
# 典型的なDP
MOD = 10**9 + 7
import numpy as np

# dp[i]をi段目までの通りの数とする。
N, M = list(map(int, input().split()))
to_zero = np.full((N + 1), False).tolist()
for _ in range(M):
    to_zero[int(eval(input()))] = True  # 床が抜けているところ
# dpテーブルの用意
dp = np.full((N + 1), -1).tolist()
dp[0] = 1
dp[1] = 0 if to_zero[1] else 1
for i in range(2, N + 1):
    dp[i] = 0 if to_zero[i] else dp[i - 2] + dp[i - 1]
    if dp[i] > MOD:
        dp[i] %= MOD
print((dp[-1]))

-to_zero = np.full((N + 1), False, dtype=bool) +to_zero = np.full((N + 1), False).tolist() -dp = np.full((N + 1), -1, dtype="int64") +dp = np.full((N + 1), -1).tolist()