from functools import lru_cache


N, M = map(int, input().split())
# 壊れている床番号
a = []
for _ in range(M):
    a.append(int(input()))
# ルートの総数
root = 0
# 今いる階段の段数
now = 0


def isSafe(now):
    """
    1, 2段先共になければ0
    1段先だけあれば1
    2段先だけあれば2
    1, 2段先共にあれば3
    """
    now_1 = not (now-1) in a
    now_2 = not (now-2) in a    
    return now_1 + now_2*2


@lru_cache(maxsize=1000)
def step(N):
    # N段を登る移動方法数
    if N <= 1 and (1 in a):
        return 1
    if N==2:
        if 2 in a:
            return step(1)
        return 2
    if isSafe(N)==1:
        return step(N-1)
    elif isSafe(N)==2:
        return step(N-2)
    elif isSafe(N)==3:
        return step(N-1)+step(N-2)
    else:
        return 0


print(step(N)%1000000007)