#include #include int T, M, t[105], w[105]; int dp[1005][1005]; int max(int a, int b) { return a > b ? a : b; } int main() { freopen("dp.in", "r", stdin); scanf("%d%d", &T, &M); for (int i = 1; i <= M; i++) { scanf("%d%d", &t[i], &w[i]); } dp[0][0] = 0; for (int i = 1; i <= M; i++) { for (int j = 1; j <= T; j++) { if (j < t[i]) dp[i][j] = dp[i - 1][j]; else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - t[i]] + w[i]); } } printf("%d\n", dp[M][T]); // for(int i=1;i<=M;i++){ // for(int j=1;j<=T;j++){ // printf("%d ",dp[i][j]); // } // printf("\n"); // } return 0; }