func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize(3)   using namespace std;   const long long mod = 1e9 + 7;   const long long maxn = 1e5 + 10;   long long n, x, y;   long long money[maxn];   pair<long long, long long> show[maxn];   multiset<pair<long long, long long> > s;   inline long long read() {     long long x = 0, f = 1;     char ch = getchar();     while (ch <  0  || ch >  9 ) {       if (ch ==  - ) f = -1;       ch = getchar();     }     while (ch >=  0  && ch <=  9 ) {       x = x * 10 + ch -  0 ;       ch = getchar();     }     return x * f;   }   int main() {     long long ans = 0;     n = read(), x = read(), y = read();     for (long long i = 1; i <= n; i++) {       show[i].first = read(), show[i].second = read();       s.insert({show[i].second, show[i].first});     }     sort(show + 1, show + 1 + n);     for (long long i = 1; i <= n; i++) {       money[i] = (x + y * (show[i].second - show[i].first));       if (!s.size() || (*s.begin()).first >= show[i].first) continue;       multiset<pair<long long, long long> >::iterator iter =           s.lower_bound({show[i].first, 0});       long long tmp = (*(--iter)).first;       if (y * (show[i].second - tmp) >= money[i]) continue;       money[i] = y * (show[i].second - tmp);       s.erase(iter);     }     for (long long i = 1; i <= n; i++) {       ans += money[i];       ans %= mod;     }     ans %= mod;     cout << ans;     return 0;   }   