#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 1e5;
const long long INF = 1e18;
int N;
long long C, D;
vector<long long> tim[MAX_N], dp[MAX_N][2];
long long psm[MAX_N + 1];
pair<long long, long long> dq[MAX_N + 8];
int main() {
  cin >> N >> C >> D;
  char prec;
  int n = 1;
  {
    long long t;
    char c;
    cin >> t >> c;
    tim[0].push_back(t);
    prec = c;
    for (int i = (0); i < (N - 1); i++) {
      cin >> t >> c;
      if (c != prec) {
        n++;
        prec = c;
      }
      tim[n - 1].push_back(t);
    }
    cin >> t;
    tim[n++].push_back(t);
  }
  for (int i = (0); i < (2); i++) dp[0][i].resize(tim[0].size());
  for (int j = (0); j < (2); j++) {
    for (int i = (0); i < ((int)tim[0].size()); i++) {
      dp[0][j][i] = i * D + (1 - j) * D;
    }
  }
  for (int i = (1); i < (n); i++) {
    for (int j = (0); j < (2); j++) dp[i][j].resize(tim[i].size());
    int tmsz = (int)tim[i].size();
    for (int j = (0); j < (tmsz); j++)
      dp[i][0][j] = (j + 1) * D + dp[i - 1][0][(int)tim[i - 1].size() - 1];
    psm[(int)tim[i - 1].size()] = 0;
    for (int j = (int)tim[i - 1].size() - 1; j >= 0; j--) {
      psm[j] = psm[j + 1] + tim[i - 1].back() - tim[i - 1][j];
    }
    long long x = INF;
    for (int j = (0); j < ((int)tim[i - 1].size()); j++) {
      for (int k = (0); k < (2); k++) {
        long long y = dp[i - 1][k][j] +
                      (psm[j + 1] + (tim[i][0] - tim[i - 1].back()) *
                                        ((int)tim[i - 1].size() - j - 1)) *
                          C;
        if (k == 1) {
          y += (tim[i][0] - tim[i - 1][0]) * C;
        }
        x = min(x, y);
      }
    }
    for (int j = (0); j < (tmsz); j++) {
      dp[i][1][j] = j * D + x;
    }
  }
  cout << dp[n - 1][1][0] << endl;
}
