#include #include #include #include #include #include #include namespace std { class Read { public: template inline Read operator >> (T & x) { T sum = 0; short opt = 1; char ch = getchar(); while(!isdigit(ch)) opt = (ch == '-') ? -1 : 1, ch = getchar(); while( isdigit(ch)) sum = (sum << 1) + (sum << 3) + (ch ^ 48), ch = getchar(); x = sum * opt; return *this; } }; } #define int long long #define all(a) a.begin(), a.end() using namespace std; Read fin; using PII = pair ; signed main() { // freopen("remake.in", "r", stdin); // freopen("remake.out", "w", stdout); int n, m; fin >> n >> m; vector a(n + 1), b(n + 1); for (int i = 1; i <= n; i ++ ) fin >> a[i] >> b[i]; if ([&]() -> bool { return a[1] == 0; }()) { int sum = 0; for (int i = 1; i <= n; i ++ ) if (b[i] > 0) sum += b[i]; cout << sum << endl; } else if([&]() -> bool { for (int i = 1; i <= n; i ++ ) if (a[i] < 0 or b[i] < 0) return false; return true; }()) { int sum = 0; for (int i = 1; i <= n; i ++ ) sum += a[i] * (m - 1) + max(a[i], b[i]); cout << sum << endl; } else { vector ba(n + 2); for (int i = n; i; i -- ) { ba[i] = max(0ll, ba[i + 1] + max(a[i], b[i])); } // for (int i = 0; i <= n; i ++ ) // cout << ba[i] << " "; // cout << endl; int sum = 0, res = 0; for (int i = 0; i <= n; i ++ ) { if (a[i] < 0) { sum += max({a[i] * (m - 1) + b[i], b[i], a[i] * m}); } else { sum += max(a[i] * m, a[i] * (m - 1) + b[i]); } // cout << sum << " "; res = max({res, sum + ba[i + 1], sum}); } // cout << endl; cout << res << endl; } }