## https://yukicoder.me/problems/no/2542 def main(): L, N = map(int, input().split()) X = list(map(int, input().split())) dp = [[False] * (L + 1) for _ in range(2)] dp[1][X[0]] = True prev = X[0] for i in range(1, N): new_dp = [[False] * (L + 1) for _ in range(2)] d = X[i] - prev for j in range(2): for t in range(L + 1): if dp[j][t]: if t + d <= L: new_dp[1][t + d] |= dp[j][t] new_dp[0][t] |= dp[j][t] dp = new_dp prev = X[i] answer = float("inf") for j in range(2): for t in range(L + 1): if dp[j][t]: l1 = t l2 = L - t ans = abs(l2 - l1) answer = min(ans, answer) print(answer) if __name__ == "__main__": main()