#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
#define int long long
const int N=2e5+5,Max=601;
int n,m;
struct node{
int a,b;
}cola[N];
int f[N];
unordered_map<int,int> mp;
signed main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>cola[i].a>>cola[i].b;
mp[cola[i].a]=max(mp[cola[i].a],cola[i].b);
}
int id=1;
for(int i=1;i<=m;i++){
if(cola[i].b*cola[id].a>cola[id].b*cola[i].a) id=i;
}
int ans=0;
if(n>Max){
int w=cola[id].a-cola[id].b;
int cnt=(n-cola[id].a)/w+1;
ans+=cnt*cola[id].a;
n-=cnt*w;
}
for(int i=1;i<=Max+5;i++){
f[i]=i;
for(auto c:mp){
int w=c.first-c.second;
if(i>=max(w,c.first)) f[i]=max(f[i],f[i-w]+c.first);
}
}
cout<<f[n]+ans;
return 0;
}