def pattern(N): # N段の階段を上る上り方、例えば1段目から5段目はN = 4 = 5-1
    if N == 0 or N == 1:
        return 1
    elif N == 2:
        return 2
    else:
        return pattern(N-1) + pattern(N-2)
n, m = map(int, input().split())
# ai番目に穴が空いているとき
# 自分がx番目にいると、ai-1番目まで上るやり方はpattern(ai-1-x)
# 穴を飛び越えたら自分はai+1番目に到着
# 初めは0段目なので、a1番目の穴の直前まで行くのにpattern(a1-1),これはx=0とすればいい
# 最後に、n段目まで上るのにはpattern(n-x)
x = 0
ans = 1
for i in range(m):
    a = int(input())
    if i == 0:
        ans = ans * pattern(a - x - 1)
        x = a + 1
    elif a == x:
        ans = 0
        break
    else:
        ans = ans * pattern (a - x - 1)
        x = a + 1
ans = ans * pattern (n - x)
print(ans % 1000000007)