#include<iostream>usingnamespace std;constint N =1100;int n, m, f[N];intmain(){
cin >> n >> m;for(int i =1; i <= n; i++){int v, w;
cin >> v >> w;for(int j = v; j <= m; j++)f[j]=max(f[j], f[j - v]+ w);}
cout << f[m];return0;}
#include<iostream>usingnamespace std;constint N =21000;int w[N], v[N], f[N];int n, m, cnt;intmain(){
cin >> n >> m;for(int i =0; i < n; i++){int a, b, s;
cin >> a >> b >> s;int p =1;while(p <= s){++cnt;
v[cnt]= a * p;
w[cnt]= b * p;
s -= p;
p *=2;}if(s){++cnt;
v[cnt]= a * s;
w[cnt]= b * s;}}for(int i =1; i <= cnt; i++)for(int j = m; j >= v[i]; j--)
f[j]=max(f[j], f[j - v[i]]+ w[i]);
cout << f[m];return0;}