#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define MOD 1000000007
using Graph = vector<vector<int>>;
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <boost/multiprecision/cpp_int.hpp>
namespace mp = boost::multiprecision;
// 任意長整数型
using Bint = mp::cpp_int;
// 仮数部が1024ビットの浮動小数点数型(TLEしたら小さくする)
using Real = mp::number<mp::cpp_dec_float<1024>>;
int dp[100010];
int main (){
  int N,M;
  cin>>N>>M;
  rep(i,M){
    int x;
    cin>>x;
    dp[x]=-1;
  }
  if(dp[1]==0) dp[1]=1;
  if(dp[2]==0) dp[2]=2;
  for(int i=3;i<=N;i++){
    if(dp[i]==-1){
      dp[i]=0;
    }
    else{
      dp[i]=dp[i-1]+dp[i-2];
      if(dp[i]!=0)
      dp[i]=((dp[i]-1)%MOD)+1;
    }
  }
  cout<<dp[N];
}
