/*
0-1 Knapsack Problem
https://w...content-available-to-author-only...f.com/problems/KNAPSACK
*/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<pair<ll, ll>> weightValues;
ll n, maxWeight;
ll maxVal(vector<vector<ll>> &dp, ll startInd, ll maxWt) {
if (startInd >= n || maxWt <= 0) return 0;
if (dp[startInd][maxWt] != -1) return dp[startInd][maxWt];
if (weightValues[startInd].first > maxWt) {
return dp[startInd][maxWt] = maxVal(dp, startInd + 1, maxWt);
}
return dp[startInd][maxWt] = max(weightValues[startInd].second + maxVal(dp, startInd + 1, maxWt - weightValues[startInd].first),
maxVal(dp, startInd + 1, maxWt));
}
int main() {
ll x;
vector<ll> input;
scanf("%lld %lld", &maxWeight, &n);
for (ll i = 0; i < 2*n; ++i) {
scanf("%lld", &x);
input.emplace_back(x);
}
for (ll i = 0; i < n; ++i) {
weightValues.emplace_back(input[i + n], input[i]);
}
sort(weightValues.begin(), weightValues.end(), [](pair<ll, ll> a, pair<ll, ll> b) {
return a > b;
});
vector<vector<ll>> dp(n, vector<ll> (maxWeight + 1, -1));
printf("%lld", maxVal(dp, 0, maxWeight));
return 0;
}
LyoKMC0xIEtuYXBzYWNrIFByb2JsZW0KaHR0cHM6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5mLmNvbS9wcm9ibGVtcy9LTkFQU0FDSwoqLwoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7Cgp2ZWN0b3I8cGFpcjxsbCwgbGw+PiB3ZWlnaHRWYWx1ZXM7CmxsIG4sIG1heFdlaWdodDsKCmxsIG1heFZhbCh2ZWN0b3I8dmVjdG9yPGxsPj4gJmRwLCBsbCBzdGFydEluZCwgbGwgbWF4V3QpIHsKCWlmIChzdGFydEluZCA+PSBuIHx8IG1heFd0IDw9IDApIHJldHVybiAwOwoKCWlmIChkcFtzdGFydEluZF1bbWF4V3RdICE9IC0xKSByZXR1cm4gZHBbc3RhcnRJbmRdW21heFd0XTsKCglpZiAod2VpZ2h0VmFsdWVzW3N0YXJ0SW5kXS5maXJzdCA+IG1heFd0KSB7CgkJcmV0dXJuIGRwW3N0YXJ0SW5kXVttYXhXdF0gPSBtYXhWYWwoZHAsIHN0YXJ0SW5kICsgMSwgbWF4V3QpOwoJfQoKCXJldHVybiBkcFtzdGFydEluZF1bbWF4V3RdID0gbWF4KHdlaWdodFZhbHVlc1tzdGFydEluZF0uc2Vjb25kICsgbWF4VmFsKGRwLCBzdGFydEluZCArIDEsIG1heFd0IC0gd2VpZ2h0VmFsdWVzW3N0YXJ0SW5kXS5maXJzdCksCgkJCQkJCQkJCSBtYXhWYWwoZHAsIHN0YXJ0SW5kICsgMSwgbWF4V3QpKTsKCn0KCmludCBtYWluKCkgewoJbGwgeDsKCXZlY3RvcjxsbD4gaW5wdXQ7CgkKCglzY2FuZigiJWxsZCAlbGxkIiwgJm1heFdlaWdodCwgJm4pOwoJZm9yIChsbCBpID0gMDsgaSA8IDIqbjsgKytpKSB7CgkJc2NhbmYoIiVsbGQiLCAmeCk7CgkJaW5wdXQuZW1wbGFjZV9iYWNrKHgpOwoJfQoJZm9yIChsbCBpID0gMDsgaSA8IG47ICsraSkgewoJCXdlaWdodFZhbHVlcy5lbXBsYWNlX2JhY2soaW5wdXRbaSArIG5dLCBpbnB1dFtpXSk7Cgl9CgoJc29ydCh3ZWlnaHRWYWx1ZXMuYmVnaW4oKSwgd2VpZ2h0VmFsdWVzLmVuZCgpLCBbXShwYWlyPGxsLCBsbD4gYSwgcGFpcjxsbCwgbGw+IGIpIHsKCQlyZXR1cm4gYSA+IGI7Cgl9KTsKCgl2ZWN0b3I8dmVjdG9yPGxsPj4gZHAobiwgdmVjdG9yPGxsPiAobWF4V2VpZ2h0ICsgMSwgLTEpKTsKCglwcmludGYoIiVsbGQiLCBtYXhWYWwoZHAsIDAsIG1heFdlaWdodCkpOwoKCXJldHVybiAwOwp9