#include<bits/stdc++.h>
using namespace std;
const int maxn=30;
int v[maxn],w[maxn],n,m,ans=-0x7ffffff;
void dfs(int cur,int curans,int l){
if(cur==m){
if(l>=v[m]){
curans+=v[m]*w[m];
l-=v[m];
}
ans=max(ans,curans);
return;
}
if(cur>m)return;
if(l<v[cur]){
ans=max(ans,curans);
return;
}
dfs(cur+1,curans+v[cur]*w[cur],l-v[cur]);
dfs(cur+1,curans,l);
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>v[i]>>w[i];
}
dfs(1,0,n);
cout<<ans;
return 0;
}