#include #include #include using namespace std; using ll = long long; int main(void){ int t, n; cin >> t >> n; vector c(n), v(n); for(auto&x:c) cin >> x; for(auto&x:v) cin >> x; for(int i=0; i dp(t+1, -1e9); dp[0]=0; for(int i=0; i old(t+1, -1e9); swap(old, dp); for(int j=0; j<=t; j++){ dp[j]=max(dp[j], old[j]); if(old[j]>=0&&j+c[i]<=t){ dp[j+c[i]]=max(dp[j+c[i]], old[j]+v[i]); } } } cout << *max_element(begin(dp), end(dp)) << endl; return 0; }