using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Collections;
static class Extensions
{
    public static int ToInt(this string s) => int.Parse(s);
    public static long ToLong(this string s) => long.Parse(s);
    public static char ToChar(this string s) => char.Parse(s);
    public static double ToDouble(this string s) => double.Parse(s);
    public static int[] ToIntArray(this string s) => s.Replace(',', ' ').Split(' ').Select(x => x.ToInt()).ToArray();
    public static long[] ToLongArray(this string s) => s.Replace(',', ' ').Split(' ').Select(x => x.ToLong()).ToArray();
    public static double[] ToDoubleArray(this string s) => s.Replace(',', ' ').Split(' ').Select(x => x.ToDouble()).ToArray();
}

class Program
{
    static string[] ReadLines(int n) => Enumerable.Range(0, n).Select(s => Console.ReadLine()).ToArray();

    static void Main()
    {
        long xxxx = 1000000007;

        var nm = Console.ReadLine().ToIntArray();

        long N = nm[0];
        long M = nm[1];

        long[] memo = new long[N + 1];
        //長さiの区間を移動するための組み合わせを先に求める
        memo[0] = 0;
        memo[1] = 1;
        memo[2] = 1;

        for (int i = 3; i < memo.Length; i++)
        {
            memo[i] = memo[i - 1] % xxxx + memo[i - 2] % xxxx;
            memo[i] %= xxxx;
        }

        var aList = Enumerable.Range(0, (int)M).Select(n => Console.ReadLine().ToInt()).ToArray();
        var current = 0;
        List<long> safeAreaList = new List<long>();

        for(int i = 0; i < aList.Length; i++)
        {
            //現在居る区画の最小
            var first = current;

            //現在居る区画の最大
            var last = aList[i] - 1;

            //現在居る区画の長さ
            var len = last - first + 1;

            safeAreaList.Add(len);
            current = aList[i] + 1;
        }

        //最後、N段目までがある        
        safeAreaList.Add(N - current + 1);

        long ans = 1;

        foreach(var x in safeAreaList)
        {
            ans *= memo[x];
            ans %= xxxx;
        }

        Console.WriteLine(ans);

    }
}