# -*- coding: utf-8 -*-
"""
Created on Sun Sep 13 12:37:37 2020

@author: liang
"""

"""
フィボナッチ数列生成
【DP(?)】　: 配列を使用することで計算量が爆発するのを防ぐ
【小さいものから計算する】の原則

【方針】
　通常の配列を用いたフィボナッチ数列の生成方法の応用版
 壊れた階段のフィボナッチ数列の値を　0 にすることで、実質遷移を止めることが出来る。
"""
key = 10**9 + 7
N, M = map(int, input().split())
A = [int(input()) for _ in range(M)]+[-1]

fibs = [0]*(N+1)
index = 0
for i in range(N+1):
    #壊れたところの値を0にすれば良い
    if i == A[index]:
        fibs[i] = 0
        index += 1
    elif i == 0 or i == 1:
        fibs[i] = 1
    else:
        fibs[i] = (fibs[i-1] + fibs[i-2])%key
        

print(fibs[N]) """
Created on Sun Sep 13 12:37:37 2020

@author: liang
""" """
フィボナッチ数列生成
【DP(?)】　: 配列を使用することで計算量が爆発するのを防ぐ
【小さいものから計算する】の原則

【方針】
　通常の配列を用いたフィボナッチ数列の生成方法の応用版
 壊れた階段のフィボナッチ数列の値を　0 にすることで、実質遷移を止めることが出来る。
""" key = 10**9 + 7 key 10**9 + 7 10**9 10 9 7 N, M = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split M int(input()) for _ in range(M) for _ in range(M) _ range(M) range M for _ in range(M) int(input()) int input() input A = [int(input()) for _ in range(M)]+[-1] A [int(input()) for _ in range(M)]+[-1] [int(input()) for _ in range(M)] [-1] -1 fibs = [0]*(N+1) fibs [0]*(N+1) [0] 0 N+1 N 1 index = 0 index 0 for i in range(N+1):
    #壊れたところの値を0にすれば良い
    if i == A[index]:
        fibs[i] = 0
        index += 1
    elif i == 0 or i == 1:
        fibs[i] = 1
    else:
        fibs[i] = (fibs[i-1] + fibs[i-2])%key
         i range(N+1) range N+1 N 1 if i == A[index]:
        fibs[i] = 0
        index += 1
    elif i == 0 or i == 1:
        fibs[i] = 1
    else:
        fibs[i] = (fibs[i-1] + fibs[i-2])%key
         i == A[index] i A[index] A index fibs[i] = 0 fibs[i] fibs i 0 index += 1 index 1 elif i == 0 or i == 1:
        fibs[i] = 1
     i == 0 or i == 1 i == 0 i 0 i == 1 i 1 fibs[i] = 1 fibs[i] fibs i 1 fibs[i] = (fibs[i-1] + fibs[i-2])%key fibs[i] fibs i (fibs[i-1] + fibs[i-2])%key fibs[i-1] + fibs[i-2] fibs[i-1] fibs i-1 i 1 fibs[i-2] fibs i-2 i 2 key print(fibs[N]) print fibs[N] fibs N A = [int(input()) for _ in range(M)]+[-1] [int(input()) for _ in range(M)]+[-1] A key = 10**9 + 7 10**9 + 7 key index = 0 0 index index += 1 1 index N, M = map(int, input().split()) map(int, input().split()) N M = map(int, input().split()) map(int, input().split()) M fibs = [0]*(N+1) [0]*(N+1) fibs
# -*- coding: utf-8 -*-
"""
Created on Sun Sep 13 12:37:37 2020

@author: liang
"""

"""
フィボナッチ数列生成
【DP(?)】　: 配列を使用することで計算量が爆発するのを防ぐ
【小さいものから計算する】の原則

【方針】
　通常の配列を用いたフィボナッチ数列の生成方法の応用版
 壊れた階段のフィボナッチ数列の値を　0 にすることで、実質遷移を止めることが出来る。
"""
key = 10**9 + 7
N, M = map(int, input().split())
A = [int(input()) for _ in range(M)]+[-1]

fibs = [0]*(N+1)
index = 0
for i in range(N+1):
    #壊れたところの値を0にすれば良い
    if i == A[index]:
        fibs[i] = 0
        index += 1
    elif i == 0 or i == 1:
        fibs[i] = 1
    else:
        fibs[i] = (fibs[i-1] + fibs[i-2])%key
        

print(fibs[N])