```c
#include<iostream>
using namespace std;
int N; //人数 (物品数)
int M; //探查间谍
int X; //钱(背包容量)
int A[1005]; //得到的资料数(物品价值)
int B[1005]; //伪装能力
int C[1005]; //工资(物品重量)
int dp[1005]; //j工资去雇人的价值
int MyM; //当前人的伪装能力
//求能拿到的最大资料(最大价值)
int main(){
cin>>N>>M>>X;
for(int i=1;i<=N;i++)
cin>>A[i]>>B[i]>>C[i];
for(int i=1;i<=N;i++){
for(int j=X;j>=0;j--){
if(C[i]<=j && B[i]+MyM<=M){
dp[j]=max(dp[j],dp[j-C[i]]+A[i]);
if(dp[j]==dp[j-C[i]]+A[i]) MyM+=B[i];
}
}
}
cout<<dp[X];
}