#include<bits/stdc++.h>
using namespace std;
using ll=long long;
struct B{
    ll a,p,c,u,l;
};

B b[305];

ll dp[305];

int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    ll n,x;
     cin>>n>>x;

    for(ll i = 1 ; i <= n ; i++){
        cin>>b[i].a>>b[i].p>>b[i].c>>b[i].u>>b[i].l;
    }
    

    for(ll i = 1; i <= n ; i++){
        for(ll j = x ; j>=0 ; j--){
            for(ll k = 0 ; k <= b[i].l && k * b[i].c <= j - b[i].p ; k++){    
                dp[j] = max(dp[j], dp[ j - b[i].p - k*b[i].c ] + b[i].a + k*b[i].u);
            }
        }
    }
    cout<<dp[x]<<endl;
	return 0;
}