#include <bits/stdc++.h>
using namespace std;
vector<long long> dp(100001);
long long fib(long long n) {
  if (dp.at(n) != -1)
    return dp.at(n);
  else {
    dp.at(n) = fib(n - 1) + fib(n - 2);
    return dp.at(n);
  }
}
int main() {
  long long N, M;
  long long ans = 1;
  cin >> N >> M;
  vector<long long> a(M + 2, -1);
  for (int i = 0; i < (int)(M); i++) cin >> a.at(i + 1);
  a.at(M + 1) = N + 1;
  for (int i = 0; i < (int)(100001); i++) dp.at(i) = -1;
  dp.at(0) = 0;
  dp.at(1) = 1;
  for (int i = 0; i <= M; i++) {
    ans *= fib(a.at(i + 1) - a.at(i) - 1);
    ans %= 1000000007;
  }
  cout << ans << endl;
}
