#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
static constexpr int mod = (int)1e9 + 7;
static constexpr int inf = 100100100;
static constexpr ll linf = 1e18;
static constexpr double eps = 1e-9;
static constexpr double pi = 3.14159265359;
template <typename T>
struct modint {
  static_assert(std::is_integral<T>::value, "T must be integral");
  modint(T value = 0, T mod = (T)1e9 + 7) : value(value % mod), mod(mod) {}
  modint operator+(const modint& rhs) const { return modint(*this) += rhs; }
  modint operator-(const modint& rhs) const { return modint(*this) -= rhs; }
  modint operator*(const modint& rhs) const { return modint(*this) *= rhs; }
  modint operator/(const modint& rhs) const { return modint(*this) /= rhs; }
  modint& operator+=(const modint& rhs) {
    value += rhs.value;
    if (value >= mod) {
      value -= mod;
    }
    return *this;
  }
  modint& operator-=(const modint& rhs) {
    if (value < rhs.value) {
      value += mod;
    }
    value -= rhs.value;
    return *this;
  }
  modint& operator*=(const modint& rhs) {
    value = value * rhs.value % mod;
    return *this;
  }
  modint& operator/=(const modint& rhs) {
    modint tmp = rhs;
    T exp = mod - 2;
    while (exp) {
      if (exp % 2) {
        *this *= tmp;
      }
      tmp *= tmp;
      exp /= 2;
    }
    return *this;
  }
  bool operator==(const modint& rhs) const { return value == rhs.value; }
  bool operator!=(const modint& rhs) const { return !(*this == rhs); }
  bool operator>(const modint& rhs) const { return value > rhs.value; }
  bool operator<(const modint& rhs) const { return value < rhs.value; }
  bool operator>=(const modint& rhs) const { return !(*this < rhs); }
  bool operator<=(const modint& rhs) const { return !(*this > rhs); }
  friend ostream& operator<<(ostream& out, const modint& m) {
    out << m.value;
    return out;
  }
  friend istream& operator>>(istream& in, modint& m) {
    in >> m.value;
    m.value %= m.mod;
    return in;
  }
  T value;
  T mod;
};
modint<ll> dp[100005];
int main() {
  ll N, M;
  cin >> N >> M;
  set<ll> A;
  for (ll i = 0; i < M; ++i) {
    ll a;
    cin >> a;
    A.insert(a);
  }
  modint<ll> ans(0);
  dp[0] = 1;
  if (1 < N && !A.count(1)) {
    dp[1] = 1;
  }
  for (ll i = 2; i <= N; ++i) {
    if (A.count(i)) continue;
    dp[i] = dp[i - 1] + dp[i - 2];
  }
  cout << dp[N] << endl;
}
