n,m=map(int,input().split())
i=0
nn=[]
j=-1

while i!=m:
    a=int(input())
    nn.append(a-j-1)
    if a-j==1:
        if j!=0:
            break
    j=a
    i=i+1
nn.append(n-a)

t=1
if a-j==1:
    t=0
    print(0)
else:
    #print(nn)
    pass
i=0
j=1
ans=1
while i!=len(nn):
    x=nn[i]
    ans_sub=1
    if x==3:
        ans_sub=2
        i=i+1
        ans_sub = int(ans_sub)
        ans = (ans * (ans_sub % 1000000007)) % 1000000007
    else:

        while (x-(1+2*j))>0:
            y=x-(1+(2*j))
            #print(y)
            #print(pow(j+1,y))
            nnt=((pow(j+1,y)-(j+1))/y)+(j+1)
            ans_sub=ans_sub+nnt
            j=j+1
            #print(nnt)
        i=i+1
        j=1
        ans_sub=int(ans_sub)
        ans=(ans*(ans_sub%1000000007))%1000000007
if t==1:
    print(ans)