#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
;
const long long maxn = 4e5;
const long long maxlog = 30;
const long long mod = 1e9 + 7;
struct sob {
  long long tm;
  long long i;
  bool type;
};
vector<sob> V;
bool cmp(sob a, sob b) {
  if (a.tm == b.tm) {
    return a.type < b.type;
  }
  return a.tm < b.tm;
}
stack<long long> S;
long long del[maxn];
pair<long long, long long> A[maxn];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long q, w, e, r, n, x, y, a, b;
  cin >> n >> x >> y;
  for (q = 0; q < n; q++) {
    cin >> a >> b;
    A[q].first = a;
    A[q].second = b;
    sob a1, b1;
    a1.tm = a;
    b1.tm = b;
    a1.type = 0;
    b1.type = 1;
    a1.i = b1.i = q;
    V.push_back(a1);
    V.push_back(b1);
  }
  sort(V.begin(), V.end(), cmp);
  for (q = 0; q < V.size(); q++) {
    if (V[q].type == 0) {
      if (!S.empty()) {
        long long i = S.top();
        if ((V[q].tm - V[i].tm) * y < x) {
          del[i] = 1;
          del[q] = 1;
          A[V[q].i].first = A[V[i].i].first;
          A[V[i].i].first = -1;
          A[V[i].i].second = -1;
          S.pop();
        }
      }
    } else {
      S.push(q);
    }
  }
  long long ans = 0;
  for (q = 0; q < n; q++) {
    if (A[q].first == -1) {
      continue;
    }
    ans += x + (A[q].second - A[q].first) * y;
    ans %= mod;
  }
  cout << ans;
  return 0;
}
