#include<bits/stdc++.h>
using namespace std;
#define int                                        long long
#define TEST                                       int t; cin>>t; while(t--)
#define pb                                         push_back
#define pii                                        pair <int, int>
#define vi                                         vector <int>
#define ff                                         first
#define ss                                         second
#define sz(v)                                      (int)v.size()
#define vpii                                       vector <pair <int, int>>
#define vvi                                        vector <vector <int> >
#define all(x)                                     (x).begin(), (x).end()
#define rall(x)                                    (x).rbegin(), (x).rend()
#define endl                                       "\n"
#define MAX                                        1e18
#define MIN                                        INT_MIN
#define mod                                        1000000007
typedef long long                                  ll;
 
int dp[1005][1005][2];
int getAns(int a[], int s[], char c[], int used, int n, int m) {
  if (n == 0 || m == 0)return 0;
 
  if (dp[n][m][used] != -1)return dp[n][m][used];
  if (used && s[n - 1] <= m && c[n - 1] == 'S') {
    return dp[n][m][1] = max(a[n - 1] + getAns(a, s, c, 1, n - 1, m - s[n - 1]), getAns(a, s, c, 1, n - 1, m));
  }
  if (!used && s[n - 1] <= m && c[n - 1] == 'S') {
    return dp[n][m][used] = max(a[n - 1] + getAns(a, s, c, 1, n - 1, m - (s[n - 1] / 2)), max(a[n - 1] + getAns(a, s, c, 0, n - 1, m - (s[n - 1])), getAns(a, s, c, 0, n - 1, m)));
  }
  else {
    return dp[n][m][used] = getAns(a, s, c, used, n - 1, m);
  }
  return dp[n][m][used];
}
 
void solve() {
  int n;
  cin >> n;
  int m; cin >> m;
  char c[n]; int s[n], a[n];
  for (int i = 0; i < n; i++) {
    string st; cin >> st;
    cin >> c[i] >> s[i] >> a[i];
  }
 
  memset(dp, -1, sizeof(dp));
  cout << getAns(a, s, c, 0, n, m) << endl;
 
}
signed main()
{
// #ifndef ONLINE_JUDGE
//   freopen("input.txt", "r", stdin);
//   freopen("output.txt", "w", stdout);
// #endif
  mt19937_64 rnd(chrono::system_clock::now().time_since_epoch().count());
  ios_base :: sync_with_stdio(0);
  cin.tie(0);
  //seive();
 
  //TEST
  solve();
 
}