#include<bits/stdc++.h>
#define N 1000009
using namespace std;
int el[N],c[N],p[N],ed,pa,n,m,siz[N],a[N],alc,anp,ans,x;
int get(int x){
return ((el[x+1]&1)&&(el[x]-el[x+1]==1))?siz[x+1]:0;
}
signed main () {
// freopen("a.in","r",stdin);
scanf("%d%d",&m,&n);
for (int i=1;i<=n;i++) scanf("%d",a+i);
sort(a+1,a+n+1);
for (int i=1;i<=n;i++) {
if (c[ed]!=a[i]) {
p[++ed]=a[i]; c[ed]=a[i]+1;
} else c[ed]++;
}
if (c[ed]==m) return printf("%d\n",c[ed]-p[ed]),0;
pa=m-2;
for (int i=ed;i;i--) {
alc+=max(pa-c[i],0),pa=p[i];
el[i]=alc; siz[i]=c[i]-p[i];
anp^=(el[i]&1)*siz[i];
}
for (int i=ed;i;i--) {
if (!el[i]) continue;
if (el[i]&1) ans+=(anp^siz[i])<siz[i];
else { x=get(i);
// assert(x==0);
ans+=(siz[i]+x>=(x^anp)&&x<(x^anp));
// cerr<<siz[i]<<' '<<x<<endl;
}
// ans+=((anp^x)<=x+siz[i])&&((anp^x)>x);
// cerr<<siz[i]<<' '<<el[i]<<endl;
}
printf("%d\n",ans);
return 0;
}