N, V, L = map(int, input().split()) x = [[0, 0, 0]] # 地点 補給できる量 コスト for i in range(N): t, m, p = map(int, input().split()) x.append([t, m, p]) x += [[L, 0, 0]] x.sort(key=lambda x:x[0]) dp = [[float('inf') for j in range(V + 1)] for i in range(N + 2)] dp[0][V] = 0 for i in range(N + 1): for j in range(V + 1): if dp[i][j] != float('inf'): if j + x[i][0] - x[i + 1][0] >= 0: # 補給しない dp[i + 1][j + x[i][0] - x[i + 1][0]] = min(dp[i][j], dp[i + 1][j + x[i][0] - x[i + 1][0]]) # 補給する dp[i + 1][min(V, j + x[i][0] - x[i + 1][0] + x[i + 1][1])] = min(dp[i][j] + x[i + 1][2], dp[i + 1][min(V, j + x[i][0] - x[i + 1][0] + x[i + 1][1])]) ans = float('inf') for i in dp[N + 1]: ans = min(i, ans) print(-1 if ans == float('inf') else ans)