#include <iostream>
using namespace std;
struct pos{
int time,num;
};
int t,m,ans=-1,vis[100]={0};
pos a[100];
void dfs(int times,int now,int tt){
if (times>m||tt>=t){
ans=max(ans,now);
return;
}
for (int i=t;i>=1;i--){
if (vis[i]==0){
vis[i]=1;
dfs(times+1,now+a[i].num,tt+a[i].time);
vis[i]=0;
}
}
return;
}
int main(){
cin>>t>>m;
for (int i=1;i<=m;i++){
cin>>a[i].time>>a[i].num;
}
dfs(1,0,0);
cout<<ans;
return 0;
}