#include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); long long N,Y,Z; cin >> N >> Y >> Z; priority_queue,vector>,greater<>> Q2; priority_queue> Q; while(N--){ long long a,b,c; cin >> a >> b >> c; Q2.push({b,c,a}); } while(Q2.size()){ auto [L,X,C] = Q2.top(); if(L <= Y) Q2.pop(),Q.push({X,C}); else break; } long long answer = 0; while(Q.size() && Y < Z){ auto [X,C] = Q.top(); Q.pop(); if(Q2.size()){ auto [l,x,c] = Q2.top(); if(Z <= l){ long long use = min(C,(Z-Y+X-1)/X); answer += use,Y += use*X; if(use != C) Q.push({X,C-use}); } else{ long long use = min(C,(l-Y+X-1)/X); answer += use,Y += use*X; if(use != C) Q.push({X,C-use}); } } else{ long long use = min(C,(Z-Y+X-1)/X); answer += use,Y += use*X; if(use != C) Q.push({X,C-use}); } while(Q2.size()){ auto [l,x,c] = Q2.top(); if(Y >= l) Q2.pop(),Q.push({x,c}); else break; } } if(Y < Z) answer = -1; cout << answer << endl; }