#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
typedef long long LL;
LL f(LL n)
{
	int f;
    if(n==1||n==0||n==2)
	{
         return n;
    }
    else
	{
       int a=1;
       int b=2;
       int temp=0;
        for(int i=3;i<n+1;i++)
		{
            temp=a+b;
            a=b;
            b=temp;
        }
         return temp;
    }
}
int main()
{
	LL n,i=0,m,s=0,k=0;
	cin>>n>>m;
	if(m==0)
	{
		s=f(n);
		s=s%1000000007;
		printf("%lld",s);
	}
	else
	{
		LL a[m],t=0;
		cin>>a[0];
		s=f(a[0]-1);
		for(i=1;i<m;i++)
		{
			cin>>a[i];
			if(a[i]-a[i-1]==1)
			{
				t=1;s=0;break;
			}
			else
			{
				k=f(a[i]-a[i-1]-2)
				
			    if(s==0)
			    {
			    	s=s+k;
				}
				else if(k!=0)
				{
					s=s*k;
				}
				s=s%1000000007;
			}
			
		}
		if(t==0&&a[m-1]!=n-1)
		{
			s=s*f(n-a[m-1]-1);
			s=s%1000000007;
		}
		printf("%lld",s);
    }
	return 0;
} 