#include <iostream>
using namespace std;
int v,n,d[2000],c[50],w[50]; //d数组的下标表示容量
int main()
{
cin >>v >>n; //v表示容量,n表示数量
for (int i=1;i<=n;i++)
cin >>w[i] >>c[i];
for (int i=1;i<=n;i++)
for (int j=v;j>=w[i];j--)
//01背包中,第二重循环要倒序,从v到w[i],倒序的原因,切勿刨根问底!
{
d[j]=max(d[j],d[j-w[i]]+c[i]); //公式
}
cout <<d[v]; //注意不是d[n]
return 0;
}