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

	class MemorizeFibonacci:public Fibonacci{
	int memo[10000] = {0};
public:
	virtual int fib(int x);
};

int MemorizeFibonacci::fib(int x){
	if(x == 0){
		return 0;
	}else if(x == 1){
		return 1;
	}else if(memo[x] != 0){
		return memo[x];
	}
	memo[x] = fib(x-1) + fib(x-2);
}
int main(){ 
    int n,m;
    long long int a=1;
    cin>> n>>m;
    vector<int> vec(m+2);
for (int i = 1; i < m+1; i++) {
  cin >> vec.at(i);
}
for(int i=1;i<m;i++){
    if(vec.at(i+1)-vec.at(i)==1){
        a=0;
        break;
    }
    a*=fib(vec.at(i+1)-vec.at(i)-1);

}
a*=fib(vec.at(1));
a*=fib(n-vec.at(m));
cout << a%1000000007<<endl;
    return 0;
}
