#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
int n, x, y;
long long ans;
vector<pair<int, int> > q;
multiset<int> st;
int main() {
  scanf("%d%d%d", &n, &x, &y);
  for (int i = 0; i < n; ++i) {
    int l, r;
    scanf("%d%d", &l, &r);
    ans += 1ll * (r - l) * y;
    ans %= MOD;
    q.push_back({l, r});
  }
  sort(q.begin(), q.end());
  for (auto it : q) {
    auto value = st.lower_bound(it.first);
    if (value != st.begin()) {
      --value;
      long long add = 1ll * (it.first - *value) * y;
      if (add <= x) st.erase(st.find(*value));
      ans += min(add, 1ll * x) % MOD;
    } else
      ans += x;
    ans %= MOD;
    st.insert(it.second);
  }
  printf("%lld", ans);
  return 0;
}
