n, m = map(int,input().split())
lists = [1,2]
last = 0
conbi = 1

def conbination(num):
    if len(lists) >= num:
        return lists[num-1]
    for i in range(len(lists),num):
        lists.append(lists[i-1]+lists[i-2])
    return lists[num-1]

for i in range(m):
    step = int(input()) #穴が空いているステップ
    if step - last== 1:  #ラストステップが穴が空いているステップの次だったとき
        if last != 0:
            conbi = 0
            break
        else:
            last = step

            continue
    if step - last == 0:
        continue
    if last == 0:
        conbi = (conbi * conbination(step - last - 1)) % (1000000007)
    else:
        conbi = (conbi * conbination(step - last - 2))%(1000000007)
    last = step


if conbi != 0 or last + 1 != n:
    step = n
    conbi = (conbi * conbination(step - last - 1))%(1000000007)

print(conbi)