#include <bits/stdc++.h>
int acs(const void *a, const void *b) { return *(int *)a - *(int *)b; }
int des(const void *a, const void *b) { return *(int *)b - *(int *)a; }
int cmp_char(const void *a, const void *b) { return *(char *)a - *(char *)b; }
int cmp_str(const void *a, const void *b) {
  return strcmp(*(const char **)a, *(const char **)b);
}
int main(void) {
  int n, m, broken[100001] = {0};
  scanf("%d %d", &n, &m);
  int bridge;
  int i;
  for (i = 0; i < m; i++) {
    scanf("%d", &bridge);
    broken[bridge] = 1;
  }
  int dp[100001];
  dp[0] = 1;
  for (i = 0; i < n; i++) {
    if (broken[i + 1] == 0) dp[i + 1] = (dp[i + 1] + dp[i]) % 1000000007;
    if (i + 2 <= n && broken[i + 2] == 0)
      dp[i + 2] = (dp[i + 2] + dp[i]) % 1000000007;
  }
  printf("%d\n", dp[n]);
  return 0;
}
