MAX_N = 10**5+1
DP = [None] * (MAX_N + 1)  # 計算結果を保存する配列
DP[0] = 0  # 定義より
DP[1] = 1  # 定義より

def fib(n):
    # フィボナッチ数を2からnまで順に求めていく
    for i in range(2, n + 1):
        DP[i] = DP[i-1] + DP[i-2]
    return DP[n]

MOD = 10**9 + 7

N, M = map(int, input().split())
a = [int(input()) for _ in range(M)]

ans = fib(a[0])
for i in range(M-1):
    ans *= fib(a[i+1] - a[i] - 1)
    ans %= MOD
ans *= fib(N - a[M-1])
ans %= MOD

print(ans)
