import sys import heapq from bisect import bisect_right input = sys.stdin.readline N, Y, Z = map(int, input().split()) C, L, X = [], [], [] for _ in range(N): c, l, x = map(int, input().split()) C.append(c) L.append(l) X.append(x) border = [(L[i], i) for i in range(N)] border.append((Z, -1)) border.sort() pq = [] for i in range(N): if L[i] <= Y: heapq.heappush(pq, (-X[i], C[i])) cur = Y ans = 0 k = bisect_right(border, (cur, 1 << 60)) while pq and cur < Z: nxt, idx = border[k] if nxt <= cur: if idx != -1: heapq.heappush(pq, (-X[idx], C[idx])) k += 1 continue x, c = heapq.heappop(pq) x = -x cnt = min((nxt - cur + x - 1) // x, c) cur += cnt * x ans += cnt if cnt != c: heapq.heappush(pq, (-x, c - cnt)) if cur < Z: print(-1) else: print(ans)