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

a = set(map(int, [eval(input()) for _ in range(m)]))



dp = [0] * (n+1)

# 0段目と1段目は1通り（但し、１段目が壊れていない場合）（0 段目は「なにもしない」という から1 通り）

dp[:2] = 1, 1 if 1 not in a else 0 



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

    if i not in a:

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



print((dp[-1]))

import sys

input = sys.stdin.readline



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

broken = set([int(eval(input())) for _ in range(m)]) # ここが'list'だとPypyでも通らない



def ptn_num(x): # 'x'stepまでのパターン数

    dp = [0] * (x+1) # DP枠_including step'0'

    if 1 in broken: # in case, step'1' broken 

        dp[:2] = 1, 0

    else:

        dp[:2] = 1, 1 # Usually



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

        if i not in broken: # 階段が壊れてない場合...

            dp[i] = (dp[i-1] + dp[i-2]) % (10**9+7) # -1段目と-2段目の合計

    print((dp[-1]))



ptn_num(n)

n, m = list(map(int, input().split()))
a = set(map(int, [eval(input()) for _ in range(m)]))
dp = [0] * (n + 1)
# 0段目と1段目は1通り（但し、１段目が壊れていない場合）（0 段目は「なにもしない」という から1 通り）
dp[:2] = 1, 1 if 1 not in a else 0
for i in range(2, n + 1):
    if i not in a:
        dp[i] = (dp[i - 1] + dp[i - 2]) % (10**9 + 7)
print((dp[-1]))

import sys

input = sys.stdin.readline
n, m = list(map(int, input().split()))
broken = set([int(eval(input())) for _ in range(m)])  # ここが'list'だとPypyでも通らない


def ptn_num(x):  # 'x'stepまでのパターン数
    dp = [0] * (x + 1)  # DP枠_including step'0'
    if 1 in broken:  # in case, step'1' broken
        dp[:2] = 1, 0
    else:
        dp[:2] = 1, 1  # Usually
    for i in range(2, x + 1):
        if i not in broken:  # 階段が壊れてない場合...
            dp[i] = (dp[i - 1] + dp[i - 2]) % (10**9 + 7)  # -1段目と-2段目の合計
    print((dp[-1]))


ptn_num(n)

+import sys + +input = sys.stdin.readline -a = set(map(int, [eval(input()) for _ in range(m)])) -dp = [0] * (n + 1) -# 0段目と1段目は1通り（但し、１段目が壊れていない場合）（0 段目は「なにもしない」という から1 通り） -dp[:2] = 1, 1 if 1 not in a else 0 -for i in range(2, n + 1): -    if i not in a: -        dp[i] = (dp[i - 1] + dp[i - 2]) % (10**9 + 7) -print((dp[-1])) +broken = set([int(eval(input())) for _ in range(m)])  # ここが'list'だとPypyでも通らない + + +def ptn_num(x):  # 'x'stepまでのパターン数 +    dp = [0] * (x + 1)  # DP枠_including step'0' +    if 1 in broken:  # in case, step'1' broken +        dp[:2] = 1, 0 +    else: +        dp[:2] = 1, 1  # Usually +    for i in range(2, x + 1): +        if i not in broken:  # 階段が壊れてない場合... +            dp[i] = (dp[i - 1] + dp[i - 2]) % (10**9 + 7)  # -1段目と-2段目の合計 +    print((dp[-1])) + + +ptn_num(n)