#include<stdlib.h>
long long max(long long money,int num, long long good[],int important[]);
void deletearray1(int i,long long good[],int num,long long x[]);
void deletearray2(int i,int importance[],int num,int x[]);
long long sort(long long x[],int num);
int main(){
long long money;
scanf("%lld",&money);
getchar();
int num;
scanf("%d",&num);
getchar();
long long good[num];
int important[num];
for(int i=0;i<num;i++){
scanf("%lld %d",&good[i],&important[i]);
}
long long all;
all = max(money,num,good,important);
printf("%lld",all);
return 0;
}
long long max(long long money,int num, long long good[],int important[]){
long long x[num];
long long x2[num-1];
int y2[num-1];
int i;
for(i=0;i<num;i++){
x[i]=0;
}
if(num<=0){
return 0;
}
i=0;
while(good[i]>money && i<num){
i++;
}
if(i==num)
return 0;
for(i=0;i<num;i++){
if(money>good[0]){
x[i]+=good[0]*important[0];
deletearray1(0,good,num-i,x2);
deletearray2(0,important,num-i,y2);
x[i]+=max(money-good[0],num-1-i,x2,y2);
}
deletearray1(0,good,num-i,good);
deletearray2(0,important,num-i,important);
}
return sort(x,num);
}
void deletearray1(int i,long long good[],int num,long long x[]){
for(int j = 0;j<num;j++){
if(j<i){
x[j]=good[j];
}
else if(j>i){
x[j-1]=good[j];
}
}
}
void deletearray2(int i,int importance[],int num,int x[]){
for(int j = 0;j<num;j++){
if(j<i){
x[j]=importance[j];
}
else if(j>i){
x[j-1]=importance[j];
}
}
}
long long sort(long long x[],int num){
for(int i = 0;i<num;i++){
if(x[0]<x[i]){
x[0]=x[i];
}
}
return x[0];
}