#include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); long long N,X,Y; cin >> N >> X >> Y; vector> V; while(N--){ long long w,v,c; cin >> w >> v >> c; while(c){ if(!(c&1)) V.push_back({v,w}),c--; V.push_back({v,w}),c--; c >>= 1,v <<= 1,w <<= 1; } } N = V.size(); double low = 0,high = 1000; for(int t=0; t<60; t++){ double mid = (high+low)/2; vector dp(X,-1e18); for(auto [v,w] : V){ auto next = dp; double add = v-mid*w; add += w/X*Y,w %= X; next.at(w) = max(next.at(w),add); for(int i=0; i= X) add += Y; next.at(to%X) = max(next.at(to%X),dp.at(i)+add); if(to >= X) add -= Y; } swap(dp,next); } if(*max_element(dp.begin(),dp.end()) >= 0) low = mid; else high = mid; } cout << fixed << setprecision(20) << low << endl; }