#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int L, N;

long long solve(vector<long long> S, vector<long long> T) {
    long long ans = 0;
    for (int k = 0; k < N; k++) {   //X[k]ではじめて折り返す。
        if ((N - k) % 2) {
            ans = max(ans, S[(N - k) / 2 + 1 + k] + S[(N - k) / 2 + k] - 2 * S[k] + 2 * T[(N - k) / 2]);
        } else {
            ans = max(ans, 2 * S[(N - k) / 2 + k] - 2 * S[k] + T[(N - k) / 2 - 1] + T[(N - k) / 2]);
        }
    }
    return ans;
}

int main() {
    cin >> L >> N;
    vector<int> X(N + 1, 0);
    vector<long long> S(N + 1, 0), T(N + 1, 0); //座標の累積和
    int x;
    for (int i = 1; i <= N; i++) {
        cin >> x;
        X[i - 1] = x;
        S[i] = S[i - 1] + x;
    }
    for(int i = 1; i <= N; i++) {
        T[i] = T[i - 1] + L - X[N - i];
    }
    
    cout << max(solve(S, T), solve(T, S)) << endl;
}