#ABC129-C
N,M=map(int,input().split())
a=[]
num=0 #N段までの行き方
check=0 #行けるかどうか
for i in range(M):
    a.append(int(input()))

for i in range(M-1):
    dif=a[i+1]-a[i]
    if dif==1:
        check=1
        break
        
f={}
f[0]=0 #番号を段数と一致させるため
if (1 in a)==True: #１が壊れているとき
    f[1]=0
else:
    f[1]=1
if (2 in a)==True: #２が壊れているとき
    f[2]=0
elif f[1]==0: #１が壊れているとき
    f[2]=1
else:
    f[2]=2

if check==0:
    for i in range(1,N-1): #1~N-2
        if any(i+2==a[k] for k in range(M)): #壊れている階段は、２段前に見つけておく。
            f[i+2]=0
            continue
        f[i+2]=f[i+1]+f[i]
    num=f[N]

#for i in range(101):
    #print(str(i)+":"+str(f[i]))
print(num%1000000007)