#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
using namespace std;
#define N 100000 + 100
int cost[N], num[N], cnt[N];
bool f[N];
int main()
{
int n, m;
while(scanf("%d %d",&m, &n) != EOF && (m + n))
{
for( int i = 0; i < n; i++)
scanf("%d %d",&num[i], &cost[i]);
memset(f, 0, sizeof(f));
f[0] = 1;
for( int i = 0; i < n; i++)
{
memset(cnt, 0, sizeof(cnt));
for( int j = cost[i]; j <= m; j++)
{
if(!f[j] && f[j - cost[i]] && cnt[j - cost[i]] < num[i])
{
f[j] = true;
cnt[j] = cnt[j - cost[i]] + 1;
}
}
}
int j = 0;
if( n != 0)
for( j = m ; j >= 0; j--)
if(f[j])
break;
printf("%d\n",j);
}
return 0;
}
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
using namespace std;
#define N 100000 + 100
int cost[N], num[N], cnt[N];
bool f[N];
int main()
{
int n, m;
while(scanf("%d %d",&m, &n) != EOF && (m + n))
{
for( int i = 0; i < n; i++)
scanf("%d %d",&num[i], &cost[i]);
memset(f, 0, sizeof(f));
f[0] = 1;
for( int i = 0; i < n; i++)
{
memset(cnt, 0, sizeof(cnt));
for( int j = cost[i]; j <= m; j++)
{
if(!f[j] && f[j - cost[i]] && cnt[j - cost[i]] < num[i])
{
f[j] = true;
cnt[j] = cnt[j - cost[i]] + 1;
}
}
}
int j = 0;
if( n != 0)
for( j = m ; j >= 0; j--)
if(f[j])
break;
printf("%d\n",j);
}
return 0;
}