/*
0-1 Knapsack Problem
*/
#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, y;
vector<ll> input;
scanf("%lld %lld", &maxWeight, &n);
for (ll i = 0; i < n; ++i) {
scanf("%lld %lld", &x, &y);
weightValues.emplace_back(x, y);
}
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;
}
LyoKMC0xIEtuYXBzYWNrIFByb2JsZW0KKi8KCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKdmVjdG9yPHBhaXI8bGwsIGxsPj4gd2VpZ2h0VmFsdWVzOwpsbCBuLCBtYXhXZWlnaHQ7CgpsbCBtYXhWYWwodmVjdG9yPHZlY3RvcjxsbD4+ICZkcCwgbGwgc3RhcnRJbmQsIGxsIG1heFd0KSB7CglpZiAoc3RhcnRJbmQgPj0gbiB8fCBtYXhXdCA8PSAwKSByZXR1cm4gMDsKCglpZiAoZHBbc3RhcnRJbmRdW21heFd0XSAhPSAtMSkgcmV0dXJuIGRwW3N0YXJ0SW5kXVttYXhXdF07CgoJaWYgKHdlaWdodFZhbHVlc1tzdGFydEluZF0uZmlyc3QgPiBtYXhXdCkgewoJCXJldHVybiBkcFtzdGFydEluZF1bbWF4V3RdID0gbWF4VmFsKGRwLCBzdGFydEluZCArIDEsIG1heFd0KTsKCX0KCglyZXR1cm4gZHBbc3RhcnRJbmRdW21heFd0XSA9IG1heCh3ZWlnaHRWYWx1ZXNbc3RhcnRJbmRdLnNlY29uZCArIG1heFZhbChkcCwgc3RhcnRJbmQgKyAxLCBtYXhXdCAtIHdlaWdodFZhbHVlc1tzdGFydEluZF0uZmlyc3QpLAoJCQkJCQkJCQkgbWF4VmFsKGRwLCBzdGFydEluZCArIDEsIG1heFd0KSk7Cgp9CgppbnQgbWFpbigpIHsKCWxsIHgsIHk7Cgl2ZWN0b3I8bGw+IGlucHV0OwoJCgoJc2NhbmYoIiVsbGQgJWxsZCIsICZtYXhXZWlnaHQsICZuKTsKCWZvciAobGwgaSA9IDA7IGkgPCBuOyArK2kpIHsKCQlzY2FuZigiJWxsZCAlbGxkIiwgJngsICZ5KTsKCQl3ZWlnaHRWYWx1ZXMuZW1wbGFjZV9iYWNrKHgsIHkpOwoJfQoKCXNvcnQod2VpZ2h0VmFsdWVzLmJlZ2luKCksIHdlaWdodFZhbHVlcy5lbmQoKSwgW10ocGFpcjxsbCwgbGw+IGEsIHBhaXI8bGwsIGxsPiBiKSB7CgkJcmV0dXJuIGEgPiBiOwoJfSk7CgoJdmVjdG9yPHZlY3RvcjxsbD4+IGRwKG4sIHZlY3RvcjxsbD4gKG1heFdlaWdodCArIDEsIC0xKSk7CgoJcHJpbnRmKCIlbGxkIiwgbWF4VmFsKGRwLCAwLCBtYXhXZWlnaHQpKTsKCglyZXR1cm4gMDsKfQ==