#include <iostream>
#include <string>
#define N 300
using namespace std;

int main(){
  int dp[N+1][3], s[N][3], c[N];
  while(1){
    int n, m;
    string temp;
    if(scanf("%d %d", &n, &m)==EOF) break;

    for(int i=0;i<n;i++){
      getchar();
      getline(cin,temp);
      cin >> c[i] >> s[i][0] >> s[i][1] >> s[i][2];
    }

    for(int i=0;i<=m;i++){
      dp[i][0]=dp[i][1]=dp[i][2]=0;
    }


    int maxi=-1;

    for(int i=0;i<=m;i++){
      for(int j=0;j<n;j++){
	for(int k=0;k<3;k++){
	  if(i+c[j]>m) continue;
	  dp[i+c[j]][k]=max(dp[i+c[j]][k],dp[i][k]+s[j][k]);
	  maxi=max(dp[i+c[j]][k],maxi);
	}
      }
    }
    if(maxi<1) cout << 0 << endl;
    else cout << maxi << endl;
  }
  return 0;
}