#include<stdio.h> int max(int a, int b) { if (a > b)return a; return b; } int main() { int C, N, maxdp = -10000; scanf("%d %d", &C, &N); int i, j, weight[N], value[N], dp[101][1001]; for (i = 0; i < N; i++)scanf("%d %d", &weight[i], &value[i]); for (i = 0; i < 101; i++) { for (j = 0; j < 1001; j++) { dp[i][j] = -9999; } } for (i = 0; i < N; i++)dp[i][0] = 0; for (j = 1; j <= C; j++) { dp[0][j] = value[0]; if (j - weight[0] < 0)dp[0][j] = 0; } for (i = 1; i < N; i++) { for (j = 1; j <= C; j++) { dp[i][j] = max(dp[i - 1][j], j - weight[i] < 0 ? 0 : value[i] + dp[i - 1][j - weight[i]]); } } for (i = 0; i < 101; i++) { for (j = 0; j < 1001; j++) { if (dp[i][j] > maxdp)maxdp = dp[i][j]; } } printf("%d\n", maxdp); return 0; }