#include<bits/stdc++.h>
using namespace std;

using ll=long long;
using int64=int64_t;
const int inf=100000000;

int in(){
  int a;
  cin >> a;
  return a;
}//int型関数の受け取り

void forin(int* x,int y){
  for (int i=0;i<y;i++){
    cin >> x[i];
  }
}//(x,y) int型配列x[y]の受け取り

int fact(int x){
  if (x == 1) return 1;
  return x*fact(x-1);
}//(x) x!

int div1(ll x){
  return x%1000000007;
}

ll broken(int x){
    if (x==-1) return 0;
    return x;
}

main(){
    int n=in(),m=in(),st[n+1];
    queue<int> a;
    for (int i=0;i<n+1;i++) st[i]=0;
    for (int i=0;i<m;i++) st[in()]=-1;
    st[0]=1;
    if (st[1]==0) st[1]=1;
    for (int i=2;i<n;1;i++){
        if (st[i]==-1) continue;
        st[i]=div1(broken(st[i-2])+broken(st[i-1]));
    }
    cout << st[n]<< endl;
}
