#include <iostream> using namespace std; int n; int num[11]; int v[11]; int maxcost; int fun(int ,int); int main() { while(cin>>maxcost) { cin>>n; for(int i =1;i<=n;i++) cin>>num[i]>>v[i]; cout<<fun(n,maxcost)<<endl; } return 0; } int fun(int ii,int jj) { int maxvalue = 0; int f[11][10001]; for(int i = 0;i<=ii;i++) for(int j = 0;j<= jj;j++) f[i][j] = 0; if(ii == 0|| jj == 0) return f[ii][jj]; int maxv = 0; for(int i = 1;i<=n;i++) { for( int j = 0;j<=jj;j++) { if(v[i] == 0) maxv = 0; else maxv = j/v[i]; if(maxv>num[i]) maxv = num[i]; for(int k = 1;k<= maxv;k++) { if(f[i-1][j]>f[i][j-v[i]*k]+v[i]*k) { f[i][j] = f[i-1][j]; }else { f[i][j] = f[i][j-v[i]*k]+v[i]*k; } if(maxvalue<f[i][j]) maxvalue = f[i][j]; } } } return maxvalue; }