#include <bits/stdc++.h>
using namespace std;
const int Inf = 100100100;
const double EPS = 1e-9;
const int num = 1000000007;
int a[100001];
int stairs(int n) {
  a[0] = 1;
  a[1] = 2;
  if (n == 1) {
    return a[0];
  }
  if (n == 2) {
    return a[1];
  }
  return a[n] = (stairs(n - 1) + stairs(n - 2)) % num;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int n, m;
  cin >> n >> m;
  vector<int> a(m + 1);
  for (int i = 0; i < (int)m; ++i) {
    cin >> a[i];
  }
  a[m] = n;
  int way = 1;
  for (int j = 0; j < (int)m + 1; ++j) {
    if (j == 0 && j != m) {
      way *= stairs(a[j] - 1) % num;
    } else if (j == m) {
      way *= stairs(a[j] - (a[j - 1] + 1)) % num;
    } else {
      way *= stairs(a[j] - 1 - (a[j - 1] + 1)) % num;
      if (a[j] - a[j - 1] == 1) {
        way = 0;
        break;
      }
    }
  }
  cout << way << '\n';
  return 0;
}
