#include<cstdio>
#include<map>
using namespace std;
const int N=1e6+10;
int m,n,a[N];
map<int,int> M;//M[i]表示距离终点有i个白格的棋子个数
typedef map<int,int>::iterator it;
int main()
{
freopen("gra.in","r",stdin);
freopen("gra.out","w",stdout);
scanf("%d%d",&m,&n);
for (int i=1;i<=n;i++){
scanf("%d",&a[i]);
M[m-a[i]-n+i-2]++;
}
if (M.count(-1)) return printf("%d\n",M[-1]),0;//可以直接取胜
int xor_sum=0;
for (it i=M.begin();i!=M.end();++i)
if ((*i).first&1) xor_sum^=(*i).second;
if (!xor_sum) return puts("0"),0;
int ans=0;
for (it i=M.begin();i!=M.end();++i)
if ((*i).first>0){
int p=(*i).first,v=(*i).second;
if ((*i).first&1) ans+=((xor_sum^v)<v);
else{
int nxt=M.count(p-1)?M[p-1]:0;
ans+=((xor_sum^nxt)<=nxt+v&&(xor_sum^nxt)>nxt);
}
}
printf("%d\n",ans);
return 0;
}