#include using namespace std; typedef long long ll; #define inf 10e17 #define rep(i,n) for(long long i=0; i()) #define debug(x) std::cerr << (x) << std::endl; #define roll(x) for (auto&& itr : x) { cerr << (itr) << " "; } template inline void chmax(T &ans, T t) { if (t > ans) ans = t;} template inline void chmin(T &ans, T t) { if (t < ans) ans = t;} int main() { ll N,V,L; cin >> N >> V >> L; vector x(N+1), v(N+1), w(N+1); x[0] = 0, v[0] = V, w[0] = 0; for (int i = 0; i < N; ++i) { cin >> x[i+1] >> v[i+1] >> w[i+1]; } x.push_back(L); v.push_back(inf); w.push_back(inf); // dp(i,j) = 地点、残り燃料、最小のコスト vector> dp(N+10, vector(V+10, inf)); dp[0][V] = 0; for (int i = 1; i <= N+1; ++i) { ll dist = x[i] - x[i-1]; for (int j = 0; j <= V; ++j) { if (dist + j <= V) { dp[i][j] = min(dp[i][j], dp[i-1][dist+j]); dp[i][min(j + v[i], V)] = min(dp[i][min(j + v[i], V)], dp[i][j] + w[i]); } } } ll ans = inf; for (auto itr : dp[N+1]) { chmin(ans, itr); } cout << ((ans == inf) ? -1 : ans) << endl; }