#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <string>
#include <sstream>
#include <complex>
#include <vector>
#include <list>
#include <queue>
#include <deque>
#include <stack>
#include <map>
#include <set>
#include <iomanip>//cout << fixed からの cout << setprecision(n) << 小数　によって小数を整数部分含めてn桁表示できるようにする
#include <cctype>
#include <unordered_map>
using namespace std;
typedef long long unsigned int ll;

#define EPS (1e-7)
#define INF (1e9)
#define PI (acos(-1))
/*
int vector_finder(std::vector<int> vec, int number) {
  auto itr = std::find(vec.begin(), vec.end(), number);
  size_t index = std::distance( vec.begin(), itr );
  if (index != vec.size()) { // 発見できたとき
    return 1;
  }
  else { // 発見できなかったとき
    return 0;
  }
}
*/

int main() {
  int n,m,tmp;
  tmp = 0;
  cin >> n >> m;
  vector<int> a(m);
  vector<bool> ok(n+1,true);

  for(int i = 0;i < m;i++) cin >> a[i];

  for(int i = 0; i < n; i++){
    if (tmp < m && a[tmp] == i){
      ok[i] = false;
      tmp += 1;
    }
  }

  vector<int> dp(n+1);
  dp[0] = 1;

  if (n != 1){
    for(int i = 0;i < n+2;i++){
      if (i == 0) dp[i] = 1;
      else if (!ok[i]) dp[i] = 0;
      else dp[i] = (dp[i-1] + dp[i-2]) % 1000000007;
    }
    //for(int i = 0;i < n+1;i++) cout << i<<" " << dp[i] << endl;
    cout << dp[n] << endl;
  }else{
    if(a[0] == 1) cout << 0 << endl;
    else cout << 1 << endl;
  }
  return 0;
}
