#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
class Unite{
public:
int g;
int w;
Unite(int g, int w){
this->g = g;
this->w = w;
}
};
bool compare(Unite* u_1, Unite* u_2){
return u_1->g < u_2->g;
}
int main(){
int n, k, g, w;
while(cin >> n >> k){
Unite* unite[10];
for(int i = 0; i < k; i++){
cin >> g >> w;
unite[i] = new Unite(g, w);
}
sort(unite, unite + k, compare);
int dp[n + 1];
memset(dp, 0, sizeof(dp));
for(int i = 1; i <= n; i++)
for(int j = 0; j < k; j++)
if(i - unite[j]->g >= 0)
dp[i] = max(dp[i], unite[j]->w + dp[i-unite[j]->g]);
sort(dp, dp + n + 1);
cout << dp[n] << endl;
}
return 0;
}
//presented by 大吉大利,今晚AC