#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 4000000000000000001 int main(){ int L,N; cin>>L>>N; vector x(N); rep(i,N)cin>>x[i]; x.push_back(L); N++; for(int i=N-1;i>=1;i--)x[i] -= x[i-1]; int A = x[0]-x.back(); x.erase(x.begin()); x.pop_back(); N -= 2; vector dp(2,vector(L*2+5,false)); int mid = L+1; dp[0][mid] = true; rep(i,N){ vector ndp(2,vector(L*2+5,false)); rep(j,2){ rep(k,L*2+5){ if(dp[j][k]==false)continue; ndp[0][k+x[i]] = true; ndp[1][k+x[i]] = true; ndp[0][k-x[i]] = true; ndp[1][k-x[i]] = true; } } swap(dp,ndp); } int ans = Inf32; rep(i,L*2+5){ if(dp[0][i])ans = min(ans,abs(i-mid+A)); } cout<