#include<bits/stdc++.h>usingnamespacestd;#define int long long
// Assumption : Green machine is the efficient machine.
// green_output/green_price >= red_output/red_price
intget_min_cost(intgreen_output,intgreen_price,intred_output,intred_price,intneed){if(green_output*red_price<red_output*green_price){returnget_min_cost(red_output,red_price,green_output,green_price,need);}intans=1e9;intlcm=(red_output*green_output)/__gcd(red_output,green_output);intlimit=lcm/red_output;for(intred_machines=0;red_machines<=limit;red_machines++){intremain=max(0LL,need-red_machines*red_output);intgreen_machines=remain/green_output+(remain%green_output?1:0);ans=min(ans,red_machines*red_price+green_machines*green_price);}returnans;}voidsolve(){intn,x;cin>>n>>x;vector<int>a(n),p(n),b(n),q(n);for(inti=0;i<n;i++){cin>>a[i]>>p[i]>>b[i]>>q[i];}intlow=0,high=1e9,res=0;while(low<=high){intmid=(low+high)/2;inthave=x;for(inti=0;i<n;i++){have-=get_min_cost(a[i],p[i],b[i],q[i],mid);if(have<0){break;}}if(have>=0){res=mid;low=mid+1;}else{high=mid-1;}}cout<<res<<"\n";}signedmain(){ios_base::sync_with_stdio(false);cin.tie(NULL);solve();}