#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
const int inf = 1000 * 1000 * 1000;
const int mod = 1000 * 1000 * 1000 + 7;
int n, x, y;
pair<int, int> p[N];
long long answ = 0;
multiset<int> q;
multiset<int>::iterator it;
int main() {
  scanf("%d%d%d", &n, &x, &y);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &p[i].first, &p[i].second);
  }
  sort(p + 1, p + n + 1);
  for (int i = 1; i <= n; i++) {
    int l = p[i].first, r = p[i].second;
    int lst = -1;
    if ((int)q.size() != 0 && *q.begin() < l) {
      it = q.lower_bound(l);
      --it;
      lst = *it;
    }
    if (lst != -1) {
      if (1ll * x <= (l - lst) * 1ll * y) {
        answ += x;
        answ %= mod;
      } else {
        answ += (l - lst) * 1ll * y % mod;
        answ %= mod;
        q.erase(q.find(lst));
      }
    } else {
      answ += x;
      answ %= mod;
    }
    answ += (r - l) * 1ll * y % mod;
    answ %= mod;
    q.insert(r);
  }
  cout << answ << endl;
  return 0;
}
