import sys input = sys.stdin.readline N,Y,Z = map(int,input().split()) CLX = [tuple(map(int,input().split())) for _ in range(N)] CLX.sort(key= lambda x:-x[1]) level = Y import heapq hq = [] while CLX and CLX[-1][1] <= level: c,l,x = CLX.pop() heapq.heappush(hq, (-x,c)) #倒すとlevel -x上昇, スライムc体 defeated = 0 while hq: x,c = heapq.heappop(hq) dl = -x next_slime_level = None if CLX: nc,next_slime_level,nx = CLX[-1] if next_slime_level is not None and level + c*dl >= next_slime_level: k = 0--(next_slime_level-level)//dl defeated += k level += k*dl rem = c-k if rem > 0: heapq.heappush(hq, (x,rem)) while CLX and CLX[-1][1] <= level: c,l,x = CLX.pop() heapq.heappush(hq, (-x,c)) elif level + c*dl >= Z: k = 0--(Z-level)//dl defeated += k exit(print(defeated)) else: level += c*dl defeated += c print(-1)