#include <bits/stdc++.h>
using namespace std;
int v,n,arr[5002],dp[5002][50002];
int main(){
cin>>v>>n;
for(int i=1;i<=n;i++){
cin>>arr[i];
}
for(int j=1;j<=v;j++){
for(int i=1;i<=n;i++){
if(arr[i]>j){
dp[i][j] = dp[i-1][j];
}else{
dp[i][j] = max(arr[i]+dp[i-1][j-arr[i]],dp[i-1][j]);
}
if(dp[i][j]==v) cout<<dp[i][j]<<endl;return 0;
}
}
cout<<dp[n][v];
return 0;
}
二维DP为何0pts