#include <bits/stdc++.h>
using namespace std;
int64_t mod = 1e9 + 7;
int64_t mod1 = 1e9 + 5;
int64_t power(int64_t a, int64_t b) {
  if (b == 0)
    return 1;
  else if (b % 2 == 0)
    return power((((a % mod) * (a % mod)) % mod), b / 2) % mod;
  else
    return ((a % mod) * (power((((a % mod) * (a % mod)) % mod), b / 2) % mod)) %
           mod;
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int64_t n, x, y;
  cin >> n >> x >> y;
  int64_t a[n + 1], b[n + 1];
  vector<pair<int64_t, int64_t>> v;
  for (int64_t i = 1; i <= n; ++i) cin >> a[i] >> b[i];
  map<pair<int64_t, int64_t>, int64_t> m;
  for (int64_t i = 1; i <= n; ++i) {
    m[{a[i], i}] = b[i];
    v.push_back({a[i], i});
  }
  sort(v.begin(), v.end());
  multiset<int64_t> s;
  int64_t ans = 0;
  for (int64_t i = 0; i < n; ++i) {
    int64_t num = v[i].first;
    int64_t end = m[{num, v[i].second}];
    if (s.size() == 0) {
      ans += x + (end - num) * y;
      ans %= mod;
      s.insert(end);
    } else {
      auto it = s.lower_bound(num);
      if (it == s.begin()) {
        ans += x + (end - num) * y;
        ans %= mod;
        s.insert(end);
      } else {
        it--;
        int64_t p = *it;
        ans += min((end - p) * y, x + (end - num) * y);
        ans %= mod;
        if ((end - p) * y <= x + (end - num) * y) {
          s.erase(s.find(p));
          s.insert(end);
        } else
          s.insert(end);
      }
    }
  }
  cout << ans;
}
