#include <bits/stdc++.h>
using namespace std;

unsigned long long f(long long n){
    if(n<=0){
      return 1;
    }else if(n==1 || n==2){
      return n;
    }else{
    long long f[n]={0};
    f[0]=1;
    f[1]=2;
    for(long long i=0;i<n-2;i++){
        f[i+2]=(f[i+1]+f[i])%1000000007;
    }
    return f[n-1];
    }
}
    

int main() {
    long long n,m;
    cin>>n>>m;
    bool flag=true;
    long long a[m+2]={0};
    for(int i=1;i<m+1;i++){
        cin>>a[i];
        if(i>=2){
            if(a[i]-a[i-1]==1){
                flag=false;
                break;
            }
        }
    }
    if(!(flag)){
        cout<<0<<endl;
    }else{
        unsigned long long ans=f(a[1]-1);
        for(long long j=1;j<m;j++){
           ans = (ans*f(a[j+1]-a[j]-2))%1000000007;
          }
        ans *= f(n-a[m]-1);
        cout<<ans%1000000007<<endl;
    }
}

