01背包
#include <iostream>
#include <memory.h>
#include <stdio.h>
#define max(a,b) (a)>(b)?(a):(b)
using namespace std;
int main()
{
int N,m;
int count[30001];
int w[25],c[25];
while(cin>>N>>m)
{
memset(count,0,sizeof(count));
for(int i=0;i<m;i++)
{
int a,b;
cin>>a>>b;
w[i]=a;
c[i]=a*b;
}
for(int i=0;i<m;i++)
for(int j=N;j-w[i]>=0;--j)
{
count[j] = max(count[j],count[j-w[i]]+c[i]);
}
cout<<count[N]<<endl;
}
}