#include <bits/stdc++.h>
using namespace std;
long long power(long long a, long long b) {
  long long res = 1;
  a = a % 1000000007;
  while (b > 0) {
    if (b & 1) {
      res = (res * a) % 1000000007;
      b--;
    }
    a = (a * a) % 1000000007;
    b >>= 1;
  }
  return res;
}
long long fermat_inv(long long y) { return power(y, 1000000007 - 2); }
long long gcd(long long a, long long b) { return (b == 0) ? a : gcd(b, a % b); }
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int T = 1;
  while (T--) {
    long long n, x, y;
    cin >> n >> x >> y;
    multiset<pair<long long, long long>> s;
    for (long long i = 0; i < n; i++) {
      long long l, r;
      cin >> l >> r;
      s.insert(make_pair(l, r));
    }
    multiset<long long> r;
    long long ans = 0;
    for (auto it = s.begin(); it != s.end(); it++) {
      if (r.size() == 0) {
        r.insert(it->second);
        ans = (ans + ((it->second - it->first) * y) % 1000000007) % 1000000007;
        continue;
      }
      auto it1 = r.lower_bound(it->first);
      if (it1 != r.begin()) {
        it1--;
        long long val = it->first - *it1;
        if (val * y <= x) {
          ans = (ans + ((it->second - *it1) * y) % 1000000007) % 1000000007;
          r.erase(it1);
          r.insert(it->second);
        } else {
          r.insert(it->second);
          ans =
              (ans + ((it->second - it->first) * y) % 1000000007) % 1000000007;
        }
      } else {
        r.insert(it->second);
        ans = (ans + ((it->second - it->first) * y) % 1000000007) % 1000000007;
      }
    }
    ans = (ans + (r.size() * x) % 1000000007) % 1000000007;
    cout << ans << "\n";
  }
  return 0;
}
