using System;
using System.Linq;
using System.Threading.Tasks;
using static System.Console;
using static System.Math;
class program{
  static void Main(string[] args){
    program p = new program();
    p.Run();
  }
  void Run(){
	int[] nm = Readint();
    int n=nm[0];
    int m=nm[1];
    int[] a =new int[m+2];
    a[0]=0;
    a[m+1]=n;
    int k=0;
    long res=1;
    for(int i=1;i<m+2;i++) a[i]=int.Parse(ReadLine());
    for(int i=1;i<m+2;i++){
      k=a[m]-a[m-1]-1;
      if(k==0){
        res=0;
      }
      else  res*=(int)(k/2)+1;
    }
    WriteLine(res.ToString());
  }

  int[] Readint(){
    string[] s = ReadLine().Split();
    int[] res=new int[s.Length];
    Parallel.For(0,s.Length,i=>{
      res[i]=int.Parse(s[i]);
    });
    return res;
  }
}