#include<iostream>
#include<algorithm>
using namespace std;
const int MAXC=1001;
const int MAXN=101;
int main()
{
int C,N;
while(cin>>C>>N)
{
int price[MAXN];
int score[MAXN];
int dp[MAXC];//注意dp初始化长度是MAXC,dp[j]表示当报销额度为j时所选菜品的最大评价分数
for(int i=1;i<=N;i++)//ddd注意最好从下标1开始,并且=n结束(输入的物品信息从下标1开始,<=N结束)
{
cin>>price[i]>>score[i];
}
for(int i=0;i<=C;i++) //这里注意一定是<=C!!!
{
dp[i]=0;
}//其实这里也可以省略,直接int dp[MAXC]={0}也可以
for(int i=1;i<=N;i++)//因为上面ddd处从下标1开始,所以这里保持一致
{
for(int j=C;j>=price[i];j--)
{
dp[j]=max(dp[j],dp[j-price[i]]+score[i]);
}
}
cout<<dp[C]<<endl;//这里注意判断一下是否会出现无解
}
return 0;
}