#include<bits/stdc++.h>
using namespace std;
const int MAX_N=1e6;
int seg_tree[2*MAX_N+5],n;
void build()
{
for(int i=n-1; i>0; --i)
seg_tree[i]=__gcd(seg_tree[i<<1],seg_tree[i<<1|1]);
}
void modify(int pos,int val)
{
for(seg_tree[pos+=n]=val; pos>1; pos>>=1)
seg_tree[pos>>1]=__gcd(seg_tree[pos],seg_tree[pos^1]);
}
int query(int l,int r)
{
int ans(1);
for(l+=n,r+=n; l<r; l>>=1,r>>=1)
{
if(l&1)
ans=__gcd(ans,seg_tree[l++]);
if(r&1)
ans=__gcd(ans,seg_tree[--r]);
}
return ans;
}
#define MOD 1000000007
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m;
cin>>n>>m;
int arr[m];
map<int,int>M;
long long int dp[n+1];
dp[0]=1;
for(int i=0; i<m; ++i)
{
cin>>arr[i];
M[arr[i]]=1;
dp[arr[i]]=0;
}
for(int i=1; i<=n; ++i)
{
if(!M[i])
dp[i]=(dp[i-1]%MOD+dp[i-2]%MOD)%MOD;
}
cout<<dp[n];
}