using static System.Console;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Typical_Stairs1
{
    class Program
    {
        static void Main(string[] args)
        {
            /* 命名規則:変数名は小文字で始めましょう(C#界で決まってる)
             * 小文字　ローカル変数
             * 大文字　関数名　クラス名　その他
             * Ctrl+R 2回で名前を変える
             */

            string input = ReadLine();
            long totalStep = 0;
            long totalBrokenStep = 0;
            //↓具体的な名前を付けましょう
            long count = 0;
            string[] array = input.Split(' ');
            totalStep = long.Parse(array[0]);
            totalBrokenStep = long.Parse(array[1]);

            //↓ "+1" やめたほうが…
            long[] step = new long[totalStep + 1];
            long[] BrokenStep = new long[totalBrokenStep + 1];

            for (long i = 0; i < totalBrokenStep; i++)
            {
                BrokenStep[i] = long.Parse(ReadLine());
            }

            /*
             * すべての階段が生きている場合
             * 
             * 段数　｜　パターン
             * 0　1　　
             * 1　1
             * 2　2
             * 3　3
             * ↓再現されてる？
             */

            step[0] = 1;
            step[1] = 2;

            if (BrokenStep[0] == 1)
            {
                step[0] = 0;
                step[1] = 1;
                count++;
            }
            if (BrokenStep[0] == 2)
            {
                step[1] = 0;
                count++;
            }
            if (BrokenStep[1] == 2)
            {
                step[1] = 0;
                count++;
            }

            for (long i = 2; i < totalStep; i++)
            {
                if (i == BrokenStep[count] - 1)
                {
                    step[i] = 0;
                    count++;

                }
                else
                {
                    step[i] = step[i - 1] + step[i - 2];
                }
            }

            //↓1000000007のような数は定数として切り出す！
            WriteLine(step[totalStep - 1] % 1000000007);
            //↑ "N+1"段目を参照してないか？
            //このミスが "+1" により招かれたものなのでは？
            //長さNの配列の最終インデックスはN-1
            ReadKey();
        }
    }
}
