#include <bits/stdc++.h>
using namespace std;

int main(){
	int c,n;
	int v[100],p[100];
	while(cin>>c>>n)
	{
		int dp[n+1][c+1];//出现dp[n][c],说明是0~c,开c+1个 
		for(int i=1;i<=n;i++)
		{
			cin>>p[i]>>v[i];//一个脑残的错误,p v 搞反了 
		}
		for(int j=0;j<=c;j++)//初始化 
		{
			dp[0][j]=0;
		}
		for(int i=1;i<=n;i++)
		for(int j=0;j<=c;j++)
		{
			if(p[i]>j) dp[i][j]=dp[i-1][j];
			else		dp[i][j]=max(dp[i-1][j],v[i]+dp[i-1][j-p[i]]);
		}
		cout<<dp[n][c]<<endl;
	}
	return 0;
}