//问题 A: 装箱问题
#include <stdio.h>
#include <algorithm>
using namespace std;
const int MAXV = 20010;
int dp[MAXV], V[MAXV];
int main() {
int n, capcity, ans = 0x7777777;
scanf("%d%d", &capcity, &n);
fill(dp, dp + MAXV, capcity);
for (int i = 0; i < n; ++i) {
scanf("%d", &V[i]);
}
for (int i = 0; i < n; ++i) {
for (int j = capcity; j >= V[i]; j--) {
dp[j] = min(dp[j], dp[j - V[i]] - V[i]);
}
}
for (int i = 0; i < MAXV; ++i) {
if (ans > dp[i]) ans = dp[i];
}
printf("%d\n", ans);
return 0;
}
10-14
380

08-16
1481
