#include?<algorithm>
#include?<cstring>
using?namespace?std;
int?dp[20001][30];
int?getdp(int?restV,?int?index,?int?n,?int?volumn[])?{
if?(index?==?n)?return?0;
if?(dp[restV][index]?>=?0)?{
return?dp[restV][index];
}
dp[restV][index]?=?getdp(restV,?index?+?1,?n,?volumn);
if?(restV?>=?volumn[index])?{
dp[restV][index]?=?max(dp[restV][index],?volumn[index]?+?getdp(restV?-?volumn[index],?index?+?1,?n,?volumn));
}
return?dp[restV][index];
}
int?main()?{
int?V,?n;
int?volumn[30];
cin?>>?V?>>?n;
for?(int?i?=?0;?i?<?n;?i++)?{
cin?>>?volumn[i];
}
memset(dp,?-1,?sizeof(dp));
cout?<<?V?-?getdp(V,?0,?n,?volumn)?<<?endl;
}