#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
const int inf = 1e9;
const int N = 2e5 + 10;
int n,m;
struct Opt {
int a,b,c;
double k;
} opt[N];
int sb[N];
bool cmp(Opt x,Opt y) {
return x.k>y.k;
}
int dp[400010];
int DP(int x) {
int ans=0;
dp[x]=x;
for(int i=1; i<=m; i++) {
for(int j=x; j>=0; j--) {
if(j>=opt[i].a) {
dp[j-opt[i].c]=max(dp[j-opt[i].c],dp[j]+opt[i].b);
}
}
}
for(int i=0; i<=x; i++) ans=max(ans,dp[i]);
return ans;
}
signed main() {
scanf("%lld%lld",&n,&m);
for(int i=1; i<=m; i++) {
int a,b,c;
double k;
scanf("%lld%lld",&a,&b);
sb[a]=max(sb[a],b);
if(b<sb[a]) {
i--,m--;
continue;
}
c=a-b;
k=b*1.0/a;
opt[i]= {a,b,c,k};
}
sort(opt+1,opt+m+1,cmp);
if(n<=300000){
cout<<DP(n);
return 0;
}
n-=300000;
int ans2=n-300000;
int cycle=n/opt[1].c-1;
ans2+=cycle*opt[1].b;
n-=cycle*opt[1].c;
cout<<ans2+DP(n)-n;
return 0;
}