import std.stdio, std.conv, std.string, std.bigint;
import std.math, std.random, std.datetime;
import std.array, std.range, std.algorithm, std.container, std.format;
string read(){ static string[] ss; while(!ss.length) ss = readln.chomp.split; string res = ss[0]; ss.popFront; return res; }

void main(){
	long l = read.to!long;
	long n = read.to!long;
	
	long[] xs;
	foreach(i; 0 .. n) xs ~= read.to!long;
	
	// 右から始め、右にi本、左にj本焼いて右で終わるとする
	// このとき折り返しの回数は min(i - 1, j) を f とすると右も左も f
	// 折り返すのは i - f - 1 番から i - 2 番までと、i 番から i + f - 1 番まで
	// 折り返さないのは i - 1 番
	// sum xs[i - f - 1 .. i - 1] * 2 + xs[i - 1] + l * f * 2 - sum xs[i .. i + f] * 2
	
	// 左から始め、右にi本、左にj本焼いて左で終わるとする
	// このとき折り返しの回数は min(i, j - 1) を f とすると右も左も f
	// 折り返すのは i - f 番から i - 1 番までと、i + 1 番から i + f 番まで
	// 折り返さないのは i 番
	// sum xs[i - f .. i] * 2 + (l - xs[i]) + l * f * 2 - sum xs[i + 1 .. i + f + 1] * 2
	
	// 左から始め、右にi本、左にj本焼いて右で終わるとする
	// このとき折り返しの回数は min(i, j) を f とすると右は f - 1 で左は f
	// 折り返すのは i - f 番から i - 2 番までと、i 番から i + f - 1 番まで
	// 折り返さないのは i - 1 番
	// sum xs[i - f .. i - 1] * 2 + xs[i - 1] + l * f * 2 - sum xs[i .. i + f] * 2
	
	// 右から始め、右にi本、左にj本焼いて左で終わるとする
	// このとき折り返しの回数は min(i, j) を f とすると右は f で左は f - 1
	// 折り返すのは i - f 番から i - 1 番までと、i + 1 番から i + f - 1番まで
	// 折り返さないのは i 番
	// sum xs[i - f .. i] * 2 + (l - xs[i]) + l * f * 2 - sum xs[i + 1 .. i + f] * 2
	
	long[] sum = [0]; // sum[i] は0からiの前までの和
	foreach(i; 0 .. n) sum ~= sum[$ - 1] + xs[i];
	
	long ans = -1;
	foreach(i; 1 .. n){
		long j = n - i;
		long f = min(i - 1, j);
		long a = (sum[i - 1] - sum[i - f - 1]) * 2 + xs[i - 1] + l * f * 2 - (sum[i + f] - sum[i]) * 2;
		if(a > ans) ans = a;
		debug writeln("i: ", i);
		debug writeln("a: ", a);
		debug writeln("ans: ", ans);
	}
	foreach(i; 1 .. n){
		long j = n - i;
		long f = min(i, j - 1);
		long a = (sum[i] - sum[i - f]) * 2 + (l - xs[i]) + l * f * 2 - (sum[i + f + 1] - sum[i + 1]) * 2;
		if(a > ans) ans = a;
		debug writeln("i: ", i);
		debug writeln("a: ", a);
		debug writeln("ans: ", ans);
	}
	foreach(i; 1 .. n){
		long j = n - i;
		long f = min(i, j);
		long a = (sum[i - 1] - sum[i - f]) * 2 + xs[i - 1] + l * f * 2 - (sum[i + f] - sum[i]) * 2;
		if(a > ans) ans = a;
		debug writeln("i: ", i);
		debug writeln("a: ", a);
		debug writeln("ans: ", ans);
	}
	foreach(i; 1 .. n){
		long j = n - i;
		long f = min(i, j);
		long a = (sum[i] - sum[i - f]) * 2 + (l - xs[i]) + l * (f - 1) * 2 - (sum[i + f] - sum[i + 1]) * 2;
		if(a > ans) ans = a;
		debug writeln("i: ", i);
		debug writeln("a: ", a);
		debug writeln("ans: ", ans);
	}
	
	ans.writeln;
}
