N,V,L = map(int,input().split()) XVW = [list(map(int,input().split())) for _ in range(N)] INF = 10 ** 13 dp = [INF] * (V + 1) dp[V] = 0 # dp[v] := 該当ガソリンスタンドで残量vとなっている最小のコスト pre = 0 for x,v,w in XVW: dp2 = [INF] * (V + 1) dx = x - pre for i in range(dx,V + 1): dp2[i-dx] = min(dp2[i-dx],dp[i]) dp2[min(i - dx + v,V)] = min(dp2[min(i - dx + v,V)],dp[i] + w) pre = x dp = dp2 if L - pre > V: print(-1) exit() ans = min(dp[min(V+1,L-pre):]) if ans == INF: print(-1) else: print(ans)