using System.Collections; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; internal class Program { private const long mod = 998244353; public static void Main(string[] args) { var line= Console.ReadLine().Split(' ').Select(int.Parse).ToArray(); int L = line[0], n = line[1]; int [] x= Console.ReadLine().Split(' ').Select(int.Parse).ToArray(); var dpup = mkar(2 * L + 1, 0); dpup[L] = 1; var dpdow = mkar(2 * L + 1, 0); void upd(int len) { var ndpup = mkar(2 * L + 1, 0); var ndpdow = mkar(2 * L + 1, 0); for (int i = 0; i <= 2 * L; i++) { if (dpup[i]>0) { ndpup[i + len] = ndpdow[i + len] = 1; } if (dpdow[i] > 0) { ndpup[i - len] = ndpdow[i - len] = 1; } } dpup = ndpup; dpdow = ndpdow; } for (int i = 0; i < n; i++) { int len = x[i]; if (i > 0) len -= x[i - 1]; upd(len); } int ans = L; int las = L - x[n - 1]; for (int i = 0; i <= 2 * L; i++) { if (dpdow[i]>0) { int val = i - las; val -= L; val = Math.Abs(val); ans = Math.Min(ans, val); } } Console.WriteLine(ans); } public static List mkar(int n, int val) { List res = new List(n); for(int i=0;i