#include<bits/stdc++.h>
using namespace std;
const long long mod=1e9+7;
typedef long long ll;
ll min(ll a,ll b){
  if(a>b){
    return b;
    }
      else{
        return a;
      }
  }
int main(){ 
  int N,M;
cin>>N>>M;
  
  vector<bool>a(N+1,true);//ハズレの階段を記録
  
  for(int i=0;i<M;i++){
    int x;
    cin>>x;
    a[x]=false;
  }

  vector<long long int>dp(N+1);//階ごとにパターン数を記録
 dp[0]=1;
  
  for(int now=0;now<N;++now){//nextにはnext-1とnext-2からくるパターンがあるそれをたす
    for(int next=now+1;next<=min(N,now+2);++next){//nowはnext-1とnext-2
      if(a[next]){
dp[next]+=dp[now]
        dp[next]%=mod;//それぞれに%=が使える
      }
    }
  }
  //DPはその階にくるパターンがN回あり、それぞれパターンに到達するパターンを全てたす
cout<<dp[N]<<endl;
 
}
