#include <iostream>
#include <vector>
using namespace std;
int n;
int m;
struct Item {
int w;
int v;
};
int backsoft(vector<Item>& items){
vector<int> dp(m+1, 0);
for(int i = 0 ; i < n ; i++){
for(int k = items[i].w ; k <= m ; k++){
dp[k] = max(dp[k],dp[k-items[i].w]+items[i].v);
}
}
return dp[m];
}
int main() {
cin >> m >> n;
vector<Item> items(n);
for (int i = 0; i < n; i++) {
cin >> items[i].w >> items[i].v;
}
cout << "max=" << backsoft(items) << endl;
return 0;
}