#include <bits/stdc++.h>
using namespace std;
const int kMod = 1000 * 1000 * 1000 + 7;
void Solve() {
  int n;
  long long x, y;
  cin >> n >> x >> y;
  vector<pair<int, int>> segs(n);
  vector<tuple<int, int, int>> events;
  for (int i = 0; i < n; ++i) {
    cin >> segs[i].first >> segs[i].second;
    events.emplace_back(segs[i].first, 0, i);
    events.emplace_back(segs[i].second, 1, i);
  }
  sort(events.begin(), events.end());
  multiset<int> done;
  long long res = 0;
  for (const auto& event : events) {
    long long curr = std::numeric_limits<long long>::max();
    int pos = get<0>(event);
    int type = get<1>(event);
    int ind = get<2>(event);
    if (type == 0) {
      curr = min(curr, x + y * (segs[ind].second - segs[ind].first));
      if (!done.empty() && y * (segs[ind].second + *(done.begin())) < curr) {
        curr = y * (segs[ind].second + *(done.begin()));
        done.erase(done.begin());
      }
      res = (res + curr) % kMod;
    } else {
      done.insert(-segs[ind].second);
    }
  }
  cout << res << '\n';
}
int main() {
  std::ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  int tests_count = 1;
  for (int test_index = 0; test_index < tests_count; ++test_index) {
    Solve();
  }
  return 0;
}
