#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (a == 0LL) return b;
  if (b == 0LL) return a;
  return gcd(b, a % b);
}
const int N = 100005;
pair<long long, long long> A[N];
multiset<int> s;
multiset<int>::iterator it;
void solve() {
  int n;
  long long x, y;
  cin >> n >> x >> y;
  long long ans = 0LL;
  for (int i = 1; i <= n; i++) {
    cin >> A[i].first >> A[i].second;
    ans += (A[i].second - A[i].first) * y;
    ans %= 1000000007LL;
  }
  sort(A + 1, A + 1 + n);
  long long val;
  for (int i = 1; i <= n; i++) {
    ans %= 1000000007LL;
    if (s.size() == 0) {
      ans += x;
      s.insert(A[i].second);
      continue;
    }
    it = s.lower_bound(A[i].first);
    if (it == s.begin()) {
      ans += x;
      s.insert(A[i].second);
      continue;
    }
    it--;
    val = *it;
    assert(val < A[i].first);
    if ((A[i].first - val) * y >= x)
      ans += x;
    else {
      ans += (A[i].first - val) * y;
      s.erase(it);
    }
    s.insert(A[i].second);
  }
  ans %= 1000000007LL;
  cout << ans << "\n";
  return;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  clock_t clk = clock();
  int t = 1;
  for (int tests = 1; tests <= t; tests++) {
    solve();
  }
  clk = clock() - clk;
  cerr << "Time Elapsed: " << fixed << setprecision(10)
       << ((long double)clk) / CLOCKS_PER_SEC << "\n";
  return 0;
}
