#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, m;
  cin >> n >> m;
  vector<int> a;
  int temp;
  for (int i = 0; i < m; i++) {
    cin >> temp;
    a.push_back(temp);
  }
  vector<int> fib;
  int f0, f1, f2;
  f0 = 0;
  f1 = 1;
  fib.push_back(1);
  for (int i = 0; i < 100000; i++) {
    f2 = f1 + f0;
    fib.push_back(f2);
    f0 = f1;
    f1 = f2;
  }
  long long int ans = 0;
  for (int i = 0; i < m + 1; i++) {
    if (i == 0) {
      ans = fib[a[i] - 1];
    } else if (0 < i && i < m) {
      if (a[i] - a[i - 1] == 1) {
        cout << 0;
        return 0;
      }
      ans *= fib[a[i] - a[i - 1] - 2];
      ans = ans % 1000000007;
    } else {
      if (n == a[i - 1]) {
        cout << 0;
        return 0;
      }
      ans *= fib[n - a[i - 1] - 1];
    }
  }
  ans = ans % 1000000007;
  cout << ans;
  return 0;
}
