#include using namespace std; typedef long long ll; typedef long double ld; typedef pair ii; typedef vector vi; typedef vector vvi; typedef vector vii; #define x first #define y second #define pb push_back #define eb emplace_back #define rep(i,a,b) for(auto i=(a); i<(b); ++i) #define REP(i,n) rep(i,0,n) #define all(v) (v).begin(), (v).end() #define rs resize #define DBG(x) cerr << __LINE__ << ": " << #x << " = " << (x) << endl const ld PI = acos(-1.0); template using min_queue = priority_queue, greater>; template int sz(const T &x) { return (int) x.size(); // copy the ampersand(&)! } template ostream& operator<<(ostream &os, vector &v) { os << "\n["; for(T &x : v) os << x << ','; return os << "]\n"; } struct pairhash { public: template size_t operator()(const pair &p) const { size_t lhs = hash()(p.x); size_t rhs = hash()(p.y); return lhs ^ (rhs+0x9e3779b9+(lhs<<6)+(lhs>>2)); } }; const ll INF = 1'000'000'000'000'000; void run() { ll n, l; cin >> n >> l; vii T(n); for (ll i = 0; i < n; i++) { string s; ll t; cin >> s >> t; ll d; if (s[0] == 'N') { d = 0; } else { d = 1; } T[i] = {t,d}; } vvi A(2, vi(n+1, INF)); A[0][0] = 0; A[1][0] = 0; vvi S(2, vi(n+1, 0)), C(2, vi(n+1, 0)); for (ll i = 0; i < n; i++) { S[0][i+1] = S[0][i]; C[0][i+1] = C[0][i]; S[1][i+1] = S[1][i]; C[1][i+1] = C[1][i]; S[T[i].y][i+1] += T[i].x; C[T[i].y][i+1] += 1; } ll t = 0, i1 = 0, i2 = 0; deque> Q; while (i1 < n || Q.size() > 0) { bool train = (i1 < n && (Q.size() == 0 || T[i1].x <= Q[0].x.x)); if (train) { t = T[i1].x; } else { t = Q[0].x.x; } while (i2 < n && T[i2].x < t + l) i2++; ll t2 = t+l; if (train) { ll d = T[i1].y; ll bc = INF; for (ll j = 0; j <= i1; j++) { ll c = A[d][j] + t2*(C[1-d][i2] - C[1-d][j]) - (S[1-d][i2] - S[1-d][j]); bc = min(bc, c); } i1++; Q.pb({{t2, 1-d}, {i1, bc}}); } else { pair q = Q[0]; Q.pop_front(); ll d = q.x.y; if (q.y.y < A[d][q.y.x]) { A[d][q.y.x] = q.y.y; ll c = q.y.y + t2*(C[1-d][i2] - C[1-d][q.y.x]) - (S[1-d][i2] - S[1-d][q.y.x]); Q.pb({{t2, 1-d}, {i1, c}}); } } } cout << min(A[0][n], A[1][n]) << endl; } signed main() { // DON'T MIX "scanf" and "cin"! ios_base::sync_with_stdio(false); cin.tie(NULL); cout << fixed << setprecision(20); run(); return 0; }