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となっている最小のコスト rem = L pre = 0 for x,v,w in XVW: rem -= x 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 ans = min(dp[L-pre:]) if ans == INF: print(-1) else: print(ans)