#include <bits/stdc++.h>
using namespace std;
const int LIM = 1e5 + 5, MOD = 1e9 + 7;
int main() {
  long long i, j, k, m, n;
  vector<pair<pair<long long, long long>, long long> > v;
  set<pair<long long, long long> > vr;
  long long x, y;
  cin >> n >> x >> y;
  vector<long long> l(n), r(n);
  for (int i = 0; i < n; ++i) {
    cin >> l[i] >> r[i];
    v.push_back({{l[i], r[i]}, i});
    vr.insert(make_pair(r[i], i));
  }
  sort(v.begin(), v.end());
  long long cost = 0;
  long long tv[n + 5];
  long long cnt = 0;
  for (int i = 0; i < n; ++i) tv[i] = -1;
  for (int i = 0; i < n; ++i) {
    long long l1, r1;
    l1 = v[i].first.first;
    r1 = v[i].first.second;
    j = v[i].second;
    set<pair<long long, long long> >::iterator it;
    pair<long long, long long> p1 = make_pair(l1, 0);
    it = vr.lower_bound(p1);
    if (it == vr.begin() || vr.size() == 1) {
      cnt++;
      tv[j] = cnt;
      cost = (cost + x) % MOD;
      cost = (cost + (((r1 - l1 + MOD) % MOD) * y) % MOD) % MOD;
    } else {
      it--;
      long long i1 = (*it).second;
      if (((l1 - r[i1]) * y) <= x) {
        tv[j] = tv[i1];
        cost = (cost + (((r1 - r[i1] + MOD) % MOD) * y) % MOD) % MOD;
        vr.erase(it);
      } else {
        cnt++;
        tv[j] = cnt;
        cost = (cost + x) % MOD;
        cost = (cost + (((r1 - l1 + MOD) % MOD) * y) % MOD) % MOD;
      }
    }
  }
  cout << cost << "\n";
}
