#include <bits/stdc++.h>
using namespace std;
const int N = 100000 + 10, M = 1000000007;
int n, x, y;
priority_queue<int, vector<int>, greater<int> > pq;
deque<int> q;
vector<pair<int, int> > v;
int main() {
  scanf("%d%d%d", &n, &x, &y);
  for (int i = 0, a, b; i < n; ++i) {
    scanf("%d%d", &a, &b);
    v.push_back({a, b});
  }
  sort(v.begin(), v.end());
  int res = 0;
  for (auto seg : v) {
    while (!pq.empty() && pq.top() < seg.first) {
      q.push_back(pq.top());
      pq.pop();
    }
    if (q.empty()) {
      res = ((long long)res + x) % M;
      res =
          ((long long)res + ((long long)y * (seg.second - seg.first)) % M) % M;
    } else {
      if (!q.empty() && (long long)y * (seg.first - q.back()) < x) {
        res =
            ((long long)res + ((long long)y * (seg.second - q.back())) % M) % M;
        q.pop_back();
      } else {
        res = ((long long)res + x) % M;
        res = ((long long)res + ((long long)y * (seg.second - seg.first)) % M) %
              M;
      }
    }
    pq.push(seg.second);
  }
  printf("%d\n", res);
  return 0;
}
