# 階段の段数
n = 100
# 壊れている階段の数
m = 5
# 壊れている階段
a = [1, 23, 45, 67, 89]

# DPテーブル初期化値
INIT = 0
# DPテーブル(dp[i]：i番目の段に到達する移動方法の総数)
dp = [INIT for i in range(n + 1)]

# 0番目の段に到達するための移動方法は1通り
dp[0] = 1

# dp[1]～dp[n]までループ
for i in range(1, n + 1):
    # 階段が壊れている場合、到達できないので0通り
    if (i in a):
        dp[i] = 0
    # i = 1の場合、0番目の段から1つ飛びで来るパターンしかない
    elif (i <= 1):
        dp[i] = dp[i - 1]
    # それ以外の場合、1つ飛びパターンと2つ飛びパターンの合計
    else:
        dp[i] = dp[i - 1] + dp[i - 2]

# 最終地点のDPテーブルの値を1000000007で割った余りが答えとなる
print(dp[n] % 1000000007)