#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct things//结构体存储物品的单价以及体积属性
{
int pi,mi;
}th[105];
int cmp(things a,things b)//sort排序所用函数
{
return a.pi>b.pi;//按照单价从大到小排序
}
int main()
{
int v/*口袋体积*/,n,i;
int sum,V/*已经装了的物品体积*/,flag/*判断是否装满的变量,为1视为未装满*/;
while(scanf("%d",&v)!=EOF)
{
if(v==0)
{
break;
}
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&th[i].pi,&th[i].mi);
}
sort(th,th+n,cmp);
sum=0;
V=0;
flag=1;
for(i=0;i<n;i++)
{
V+=th[i].mi;//总体积增加
sum+=th[i].pi*th[i].mi;//总价值增加
if(V>v)//超过口袋的容积
{
V-=th[i].mi;//变回此次未装的体积
sum-=th[i].pi*th[i].mi;//变回此次未装的价值
flag=0;//能装满
break;
}
}
if(flag==0)//如果能装满,说明V<=v,需要将剩余部分填满
{
sum+=(v-V)*th[i].pi;//价值填满
}
printf("%d\n",sum);
}
}