#include using namespace std; const int N = 510, M = 6010; int n, m; int v[N], w[N], s[N]; int f[N][M]; // 二维朴素作法 int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { int v, w, s; cin >> v >> w >> s; for (int j = 0; j <= m; j++) for (int k = 0; k <= s && j >= k * v; k++) f[i][j] = max(f[i][j], f[i - 1][j - k * v] + k * w); } printf("%d\n", f[n][m]); return 0; }