#include <iostream>
using namespace std;
int T, M;
struct cave {
int t, val;
}med[101];
int dp[101][101];
int solve() {
memset(dp, 0, sizeof(dp));
for (int i = 0; i < M; ++i) {
for (int j = 0; j <= T; j++) {
if (med[i].t > j) {
dp[i][j] = dp[i - 1][j];
}
else {
dp[i][j] = max(dp[i - 1][j],
dp[i - 1][j - med[i].t] + med[i].val);
}
}
}
return dp[M - 1][T];
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> T >> M;
for (int i = 0; i < M; ++i) {
cin >> med[i].t >> med[i].val;
}
cout << solve();
return 0;
}