#include <bits/stdc++.h>
#define rep(i, a, n) for(int i = a; i < n; i++)
#define repr(i, a, b) for(int i = a; i >= b; i--)
#define int long long
#define all(a) a.begin(), a.end()
using namespace std;
typedef pair<int, int> P;
const int mod = 1000000007;
const int INF = 1e18;

int l, n;
vector<int> x;

struct CumulativeSum{
    vector<int> data;
    CumulativeSum(int sz) : data(sz, 0) {};
    void add(int k, int x){
        data[k] += x;
    }
    void build(){
        for(int i = 1; i < data.size(); i++){
            data[i] += data[i - 1];
        }
    }
    //区間[0,k]の和
    int query(int k){
        if(k < 0) return 0;
        return (data[min(k, (int)data.size() - 1)]);
    }
    //区間[l.r)の和
    int query(int l, int r){
        if(l >= r) return 0;
        return query(r - 1) - query(l - 1);
    }
};

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> l >> n;
    x.resize(n);
    rep(i, 0, n){
        cin >> x[i];
    }
    CumulativeSum ls(n), rs(n);
    rep(i, 0, n){
        ls.add(i, x[i]);
        rs.add(i, l - x[i]);
    }
    ls.build();
    rs.build();
    int ans = 0;
    rep(i, 0, n){
        int c = min(i, n - 1 - i);
        int tmp = 0;
        tmp = ls.query(i - c, i) * 2 + rs.query(i + 1, i + c + 1) * 2 + l - x[i];
        if(i != c) tmp = max(tmp, ls.query(i - c - 1, i) * 2 + rs.query(i + 1, i + c + 1) * 2 + l - x[i]); 
        // cout << i << ' ' << c << ' ' << ls.query(i - c, i) << ' ' << rs.query(i + 1, i + c + 1) << " " << l - x[i] << endl;
        // int tmp = 0;
        // if(i < n / 2){
        //     int c = i;
        //     tmp = ls.query(0, i) * 2 + rs.query(i + 1, i + c) * 2 + (l - x[i]);
        //     cout << " " << c << ' ' << ls.query(0, i) << ' ' << rs.query(i + 1, i + c) << ' ' << l - x[i] << endl;
        // }else{
        //     int c = n - i;
        //     tmp = ls.query(i - c, i) * 2 + rs.query(i + 1, i + c - 1) * 2 + (l - x[i]);
        //     cout << " " << c << ' ' << ls.query(0, i) << ' ' << rs.query(i + 1, i + c) << ' ' << l - x[i] << endl;            
        // }
        // cout << i << ' ' << tmp << endl;
        tmp = max(tmp, ls.query(i - c, i) * 2 + rs.query(i + 1, i + c + 1) * 2 + x[i]);
        if(i != n - 1 - i) tmp = max(tmp, ls.query(i - c, i) * 2 + rs.query(i + 1, i + c + 2) * 2 + x[i]);
        ans = max(ans, tmp);
    }
    // rep(i, 0, n){
    //     x[i] = l - x[i];
    // }
    // CumulativeSum ls2(n), rs2(n);
    // rep(i, 0, n){
    //     ls2.add(i, x[i]);
    //     rs2.add(i, l - x[i]);
    // }
    // ls2.build();
    // rs2.build();
    // rep(i, 0, n){
    //     // int tmp = 0;
    //     // if(i < n / 2){
    //     //     int c = i;
    //     //     tmp = ls2.query(0, i) * 2 + rs2.query(i + 1, i + c) * 2 + (l - x[i]);
    //     // }else{
    //     //     int c = n - i;
    //     //     tmp = ls2.query(i - c, i) * 2 + rs2.query(i + 1, i + c - 1) * 2 + (l - x[i]);
    //     // }
    //     // cout << i << ' ' << tmp << endl;
    //     int c = min(i, n - 1 - i);
    //     int tmp = 0;
    //     tmp = ls.query(i - c, i) * 2 + rs.query(i + 1, i + c + 1) * 2 + l - x[i];
    //     if(i != c) tmp = max(tmp, ls.query(i - c - 1, i) * 2 + rs.query(i + 1, i + c + 1) * 2 + l - x[i]); 

    //     // int tmp = 0;
    //     ans = max(ans, tmp);
    // }
    cout << ans << endl;
}

Measured memory_bytes: 4992