#include <bits/stdc++.h>
using namespace std;
const long long MOD = pow(10, 9) + 7;
long long mod(long long A, long long M) { return (A % M + M) % M; }
const long long INF = 1LL << 60;
const string ABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const string abc = "abcdefghijklmnopqrstuvwxyz";
template <class T>
bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
long long divCeil(long long A, long long B) { return (A + (B - 1)) / B; }
vector<long long> memof(100100, 0);
long long f(long long N) {
  if (N == 0) return 1;
  if (N == 1) return 1;
  if (memof.at(N) > 0) return memof.at(N);
  long long r = (f(N - 2) + f(N - 1)) % MOD;
  memof.at(N) = r;
  return r;
}
signed main() {
  long long N, M;
  cin >> N >> M;
  long long ans = 1;
  long long a0 = -1;
  for (long long i = 0; i < M; i++) {
    long long a;
    cin >> a;
    ans *= f(a - a0 - 2);
    ans %= MOD;
    a0 = a;
  }
  ans *= f(N - a0 - 1);
  ans %= MOD;
  cout << ans << endl;
}
