/*
题型:完全背包
注意:j与0,1背包反过来即可
*/
#include<bits/stdc++.h>
using namespace std;
struct yao{
int value;int heavy;
}a[1000001];
int f[1000001];
int main(){
int t,n;
cin>>t>>n;
for(int i=1;i<=n;i++)
cin>>a[i].heavy>>a[i].value;
for(int i=1;i<=n;i++)
for(int j=a[i].heavy;j<=t;j++)
f[j]=max(f[j],f[j-a[i].heavy]+a[i].value);
cout<<f[t];
return 0;
}