#include<iostream>
#include<stack>
using namespace std;

int n,L,X[1000000];
long long ans;
stack<int>s1,s2;

int dis(int x,int y)
{
	return y>x ? y-x:L+y-x;
}

long long calc(int x,int d)
{
	if(d==1)
	{
		int y=s1.top();
		s1.pop();
		if(x==y)
			return 0;
		return dis(x,y)+calc(y,-1);
	}
	else
	{
		int y=s2.top();
		s2.pop();
		if(x==y)
			return 0;
		return dis(y,x)+calc(y,1);
	}
}

void solve()
{
	for(int i=n;i;--i)
		s1.push(X[i]);
	for(int i=1;i<=n;i++)
		s2.push(X[i]);
	long long sum=calc(0,1);
	ans=max(ans,sum);
	for(int i=n+1;i<=n*3+2;i++)
		X[i]=X[i-n-1];
	int l=(n+1)/2+1,r=n+1+(n+1)/2;
	for(int i=n+2;i<n*2+1;i++)
		if(i&1)
		{
			sum+=dis(X[i],X[r])-dis(X[l],X[i]);
			ans=max(ans,sum);
		}
		else
		{
			sum+=dis(X[i],X[r+1])-dis(X[l],X[i]);
			ans=max(ans,sum);
			++l,++r;
		}
}
int main()
{
	scanf("%d%d",&L,&n);
	for(int i=1;i<=n;i++)
		scanf("%d",&X[i]);
	solve();
	for(int i=1;i<=n;i++)
		X[i]=L-X[i];
	for(int i=1;i<=n/2;i++)
		swap(X[i],X[n-i+1]);
	solve();
	cout<<ans<<endl;
}
