#include <bits/stdc++.h>
using namespace std;
int L, N;


long keisan(long x[], int z[]){
    long y[N + 1];
    y[0] = x[0];
    for(int i = 1; i < N; i++){
        y[i] = x[i] - x[i-1];
    }
    y[N] = L - x[N-1];

    long len1 = 0;
    for(int i = 0; i < N + 1; i++){
        len1 += y[i] * z[i];
    }

    long ans = len1;
    for(int i = 1; i < N / 2 + 1; i++){
        len1 += x[i + (N - i + 1)/2 - 1] - 2 * x[i - 1] - L + x[N - ((N - i + 1)/2)];
        if(len1 > ans)
            ans = len1;
    }
    return ans;
}

void keisan2(int z[]){
    for(int i = 0; i < N / 2 + 1; i++){
        z[i] = N - i * 2;
    }
    for(int i = 0; i < (N - 1) / 2 + 1; i++){
        z[N - i] = N -1 - i * 2;
    }
}


int main() {
    cin >> L >> N;
    long X[N];
    for(int i = 0; i < N; i++){
        cin >> X[i];
    }

    int Z[N + 1];
    keisan2(Z);
    long ans = keisan(X, Z);

    //ここから逆

    long X1[N];
    for(int i = 0; i < N; i++){
        X1[i] = L - X[N - i -1];
    }
    long ans2 = keisan(X1, Z);
    if(ans2 > ans)
        ans = ans2;

    cout << ans << "\n";
}