#include <bits/stdc++.h>
using namespace std;
long long n, x, y, cost, cost1, cost2, poz, nr;
pair<long long, long long> el[100005];
multiset<long long> myset;
multiset<long long>::iterator it;
int main() {
  cin >> n >> x >> y;
  for (int i = 1; i <= n; i++) {
    long long a, b;
    cin >> a >> b;
    el[i].first = a;
    el[i].second = b;
  }
  sort(el + 1, el + n + 1);
  cost = (x + y * (el[1].second - el[1].first)) % 1000000007;
  myset.insert(el[1].second);
  for (int i = 2; i <= n; i++) {
    nr = el[i].first;
    if (*myset.begin() >= el[i].first) {
      cost += x + y * (el[i].second - el[i].first);
      cost = cost % 1000000007;
      myset.insert(el[i].second);
    } else {
      cost1 = x + y * (el[i].second - el[i].first);
      it = myset.lower_bound(nr);
      it--;
      poz = *it;
      cost2 = y * (el[i].second - poz);
      if (cost1 < cost2) {
        cost += cost1;
        myset.insert(el[i].second);
      } else {
        myset.erase(it);
        cost += cost2;
        myset.insert(el[i].second);
      }
      cost = cost % 1000000007;
    }
  }
  cout << cost % 1000000007;
  return 0;
}
