#include int max(int a, int b) { if (a > b) return a; else return b; } int s[1003], a[1003]; int dp[1003]; int main() { int n, I; scanf("%d %d", &n, &I); int i, j; for (i = 0; i < n; i++) scanf("%d %d", &s[i], &a[i]); for (i = 0; i <= I; i++) dp[i] = -1; dp[0] = 0; for (i = 0; i < n; i++) { for (j = I - s[i]; j >= 0; j--) { if (dp[j] < 0) continue; dp[j + s[i]] = max(dp[j + s[i]], dp[j] + a[i]); } } int ans = 0; for (i = 0; i <= I; i++) ans = max(ans, dp[i]); printf("%d\n", ans); return 0; }