#include<bits/stdc++.h>
using namespace std;
const int N=110;
long long a[N],p[N],b[N],q[N];
int n,x;
bool check(int mid){
long long sum=0;
for(int i=1;i<=n;i++){
long long pp=ceil(1.0*mid/a[i])*p[i];
long long qq=ceil(1.0*mid/b[i])*q[i];
long long fx=floor(1.0*mid/a[i])*p[i]+ceil(1.0*(mid-floor(1.0*mid/a[i])*a[i])/b[i])*q[i];
long long fy=floor(1.0*mid/b[i])*q[i]+ceil(1.0*(mid-floor(1.0*mid/b[i])*b[i])/a[i])*p[i];
sum+=min(pp,min(qq,min(fx,fy)));
}
return sum<=x;
}
int main(){
cin>>n>>x;
for(int i=1;i<=n;i++){
cin>>a[i]>>p[i]>>b[i]>>q[i];
}
int l=0,r=1e7,best=-1;
while(l<=r){
int mid=(l+r)/2;
if(check(mid)){
l=mid+1;
best=mid;
}
else{
r=mid-1;
}
}
cout<<best;
}