#include <bits/stdc++.h>
using namespace std;
long long patarn(vector<long long> vec, int p) {
  if (p < 0) {
    return 0;
  } else
    return vec.at(p);
}
int main() {
  int N, M;
  cin >> N >> M;
  vector<long long> vec = {1, 1};
  for (int i = 0; i < N; i++) {
    auto itr = vec.end() - 1;
    long long add = *itr + *(itr - 1);
    vec.push_back(add);
  }
  long long ans;
  if (M == 0) {
    ans = vec.at(N);
  } else {
    int a[M];
    cin >> a[0];
    for (int i = 1; i < M; i++) {
      cin >> a[i];
    }
    ans = patarn(vec, a[0] - 1);
    if (M > 1) {
      for (int i = 1; i < M; i++) {
        ans *= patarn(vec, a[i] - a[i - 1] - 2);
        ans %= 1000000007;
      }
    }
    ans *= patarn(vec, N - a[M - 1] - 1);
  }
  ans %= 1000000007;
  cout << ans;
}
