#include <bits/stdc++.h>
using namespace std;
long long N, X, Y;
vector<pair<long long, long long>> show;
int main() {
  scanf("%lld%lld%lld", &N, &X, &Y);
  for (int i = 0; i < N; i++) {
    long long l, r;
    scanf("%lld%lld", &l, &r);
    show.push_back({l, r});
  }
  sort(show.begin(), show.end());
  priority_queue<long long> pq;
  priority_queue<long long, vector<long long>, greater<long long>> rd;
  long long ans = 0;
  const long long MOD = 1e9 + 7;
  for (int i = 0; i < N; i++) {
    long long L = show[i].first, R = show[i].second;
    while (!rd.empty()) {
      auto t = rd.top();
      if (t < L) {
        rd.pop();
        pq.push(t);
      } else
        break;
    }
    bool ok = false;
    if (!pq.empty()) {
      long long t = pq.top();
      long long cost = (L - t) * Y;
      if (cost < X) {
        ok = true;
        pq.pop();
        cost += (R - L) * Y;
        ans = (ans + cost % MOD) % MOD;
        rd.push(R);
      } else {
        while (!pq.empty()) pq.pop();
      }
    }
    if (!ok) {
      long long cost = X + (R - L) * Y;
      ans = (ans + cost % MOD) % MOD;
      rd.push(R);
    }
  }
  printf("%lld\n", ans);
}
