#include using namespace std; const int N = 100010; // 到第i个物品,总价值超过j的最大收益 int dp[30][N]; int main() { // 总钱数、个数 int n, m; // 价格、重要度 int v[30], w[30]; cin >> n >> m; for (int i = 1; i <= m; i++) cin >> v[i] >> w[i]; for (int i = 1; i <= m; i++) { for (int j = 0; j <= n; j++) { if (j < v[i]) { // 不够钱不买 dp[i][j] = dp[i - 1][j]; } else { dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - v[i]] + v[i] * w[i]); } } } cout << dp[m][n] << endl; return 0; }