#include <iostream>
using namespace std;
const int N = 110;
int n, V, M;
int f[N][N];
int main()
{
cin >> n >> V >> M;
for(int i = 1; i <= n; i++)
{
int v, m, w;
cin >> v >> m >> w;
for(int j = M; j >= m; j--)
{
for(int k = V; k >= v; k--)
{
f[j][k] = max(f[j][k], f[j - m][k - v] + w);
}
}
}
cout << f[M][V] << endl;
return 0;
}
/*
相比于一维背包只是变成了二维,多加一重循坏就可以了
*/