#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;


int n,m;
int c[300];
int p[300][3];

int f(int k){
	int dp[301]={};
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			int b=0;
			for(int a=c[i];j+a<=m;a+=c[i]){
				b+=p[i][k];
				dp[j+a]=max(dp[j+a],dp[j]+b);
			}
		}
	}
	return *max_element(dp,dp+m+1);
}

int main(){
	while(cin>>n>>m&&n){
		for(int i=0;i<n;i++){
			string s;
			cin.ignore();
			getline(cin,s);
			cin>>c[i];
			for(int j=0;j<3;j++){
				cin>>p[i][j];
			}
		}
		cout<<max(max(f(0),f(1)),f(2))<<endl;
	}
	return 0;
}