#include <bits/stdc++.h>
using namespace std;
#define rep(i, N) for(int i=0; i<N; i++)
typedef long long ll;

template<class T> inline bool chmin(T& a, T b) {
    if (a > b) {
        a = b;
        return true;
    }
    return false;
}
template<class T> inline bool chmax(T& a, T b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}

const long long INF = 1LL << 60;
const long long div = 1000000007;

int main() {
    int N=0, M=0;
    cin >> N >> M;

    vector<int> a(M+1, -2);
    rep(i, M) cin >> a.at(i);

    vector<ll> dp(N+5, -1);
    dp.at(0) = 1;
    dp.at(1) = 1;

    ll tmp = a.at(0);
    ll cnt = 0;

    rep(i, M){
        if(a.at(i+1) == a.at(i) + 1){
            cout << 0 << endl;
            return 0;
        }
    }

    rep(i, N){
        if(i == tmp){
            ++cnt;
            tmp = a.at(cnt);
            chmax(dp.at(i+2), dp.at(i+1));
        }
        else if(i+1 == tmp){
            chmax(dp.at(i+2), dp.at(i));
        }
        else{
            chmax(dp.at(i+2), dp.at(i)%div+dp.at(i+1)%div);
        }
    }

    cout << dp.at(N)%div << endl;

}
