#include <bits/stdc++.h>
using namespace std;
int N, kapasitas, berat[101], harga[101];
int memo[2002][101];
int knapsack(int bobot, int n) {
if(n == N)
return 0;
if(memo[bobot][n] != -1)
return memo[bobot][n];
// skip
int best = knapsack(bobot, n+1);
// ambil
if(bobot+berat[n] <= kapasitas)
best = max(best, knapsack(bobot+berat[n], n+1)+harga[n]);
return memo[bobot][n] = best;
}
int main() {
cin >> kapasitas >> N;
for(int i = 0; i < N; i++)
cin >> berat[i] >> harga[i];
memset(memo, -1, sizeof(memo));
// top down
// cout << knapsack(0, 0) << endl;
// bottom up
for(int i = 0; i <= kapasitas; i++)
memo[i][0] = 0;
for(int i = 1; i <= N; i++) {
for(int j = 0; j <= kapasitas; j++) {
int best = memo[j][i-1];
if(j >= berat[i-1])
best = max(best, memo[j-berat[i-1]][i-1]+harga[i-1]);
memo[j][i] = best;
}
}
cout << memo[kapasitas][N] << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgTiwga2FwYXNpdGFzLCBiZXJhdFsxMDFdLCBoYXJnYVsxMDFdOwppbnQgbWVtb1syMDAyXVsxMDFdOwoKaW50IGtuYXBzYWNrKGludCBib2JvdCwgaW50IG4pIHsKCWlmKG4gPT0gTikKCQlyZXR1cm4gMDsKCWlmKG1lbW9bYm9ib3RdW25dICE9IC0xKQoJCXJldHVybiBtZW1vW2JvYm90XVtuXTsKCQoJLy8gc2tpcAoJaW50IGJlc3QgPSBrbmFwc2Fjayhib2JvdCwgbisxKTsKCS8vIGFtYmlsCglpZihib2JvdCtiZXJhdFtuXSA8PSBrYXBhc2l0YXMpCgkJYmVzdCA9IG1heChiZXN0LCBrbmFwc2Fjayhib2JvdCtiZXJhdFtuXSwgbisxKStoYXJnYVtuXSk7CglyZXR1cm4gbWVtb1tib2JvdF1bbl0gPSBiZXN0Owp9CgppbnQgbWFpbigpIHsKCWNpbiA+PiBrYXBhc2l0YXMgPj4gTjsKCWZvcihpbnQgaSA9IDA7IGkgPCBOOyBpKyspCgkJY2luID4+IGJlcmF0W2ldID4+IGhhcmdhW2ldOwoJbWVtc2V0KG1lbW8sIC0xLCBzaXplb2YobWVtbykpOwoJCgkvLyB0b3AgZG93bgoJLy8gY291dCA8PCBrbmFwc2FjaygwLCAwKSA8PCBlbmRsOwoJCgkvLyBib3R0b20gdXAKCWZvcihpbnQgaSA9IDA7IGkgPD0ga2FwYXNpdGFzOyBpKyspCgkJbWVtb1tpXVswXSA9IDA7CgkKCWZvcihpbnQgaSA9IDE7IGkgPD0gTjsgaSsrKSB7CgkJZm9yKGludCBqID0gMDsgaiA8PSBrYXBhc2l0YXM7IGorKykgewoJCQlpbnQgYmVzdCA9IG1lbW9bal1baS0xXTsKCQkJaWYoaiA+PSBiZXJhdFtpLTFdKQoJCQkJYmVzdCA9IG1heChiZXN0LCBtZW1vW2otYmVyYXRbaS0xXV1baS0xXStoYXJnYVtpLTFdKTsKCQkJbWVtb1tqXVtpXSA9IGJlc3Q7CgkJfQoJfQoJY291dCA8PCBtZW1vW2thcGFzaXRhc11bTl0gPDwgZW5kbDsKCQoJcmV0dXJuIDA7Cn0=