#include <bits/stdc++.h>
long long int func(int d);
int main() {
  int i, j, n, m, d;
  long long int ans = 1, mod = 1000000007;
  scanf("%d %d", &n, &m);
  int a[m + 2];
  a[0] = -1;
  a[m + 1] = n + 1;
  for (i = 1; i <= m; i++) scanf("%d", &a[i]);
  for (i = 0; i <= m; i++) {
    d = a[i + 1] - a[i] - 2;
    if (d > 0) {
      ans *= func(d);
      ans %= mod;
    } else if (d < 0) {
      ans = 0;
      break;
    }
  }
  printf("%lld", ans);
  return 0;
}
long long int func(int d) {
  if (d <= 0)
    return 0;
  else if (d < 2)
    return 1;
  else if (d < 4)
    return d;
  else
    return (func(d - 2) * 2 + func(d - 3));
}
