using System;
using System.Linq;
using System.Collections.Generic;

public class Hello{
    public static void Main(){
        var list=new List<double>();
        string[]array=Console.ReadLine().Split(' ');
        for(var i=0;i<array.Length;i++){
            list.Add(int.Parse(array[i]));
        }
        double N=list[0];
        double M=list[1];
        
        var flg=0;
        var list_list=new List<double>();
        for(var i=0;i<M;i++){
            list_list.Add(double.Parse(Console.ReadLine()));
            if(i>=1&&list_list[i]-list_list[i-1]==1){
                Console.WriteLine(0);
                flg=1;
                break;
            }
        }
        
        var list_main=new List<double>();
        double count=0;
        double sum=1;
        if(flg==0){
            for(var i=0;i<=N;i++){
                list_main.Add(i);
            }
            for(var i=0;i<M;i++){
                list_main.Remove(list_list[i]);
            }
            
            for(var i=0;i<list_main.Count;i++){
                if(i>0){
                    if(list_main[i]-list_main[i-1]!=1){
                        //Console.WriteLine(Fib(count));
                        sum=sum*(Fib(count));
                        count=1;
                    }
                    else if(i==list_main.Count-1){
                        //Console.WriteLine(Fib(count));
                        sum=sum*(Fib(count));
                    }
                }
                count++;
            }
            Console.WriteLine(sum%1000000007);
        }
    }
    
    public static double Fib(double a){
        if(a<=1){
            return a;
        }
        return Fib(a-1)+Fib(a-2);
    }
}