#include #include using namespace atcoder; using namespace std; using ll = long long; int N; ll M; int MN = 2e6; vector A(MN), B(MN); ll INF = (1LL << 60); ll score(int i, int j) { if (j == 0) return 0LL; ll d = j; if (d == 2) d = M; return max(d * A[i], max(((d - 1) * A[i]) + B[i], B[i])); } int main() { cin >> N >> M; for (int i = 1;i <= N;i++) cin >> A[i] >> B[i]; vector> dp(N + 1, vector(3, -INF)); dp[1][2] = score(1, 2); for (int i = 2;i <= N;i++) for (int j = 0;j < 3;j++) for (int k = j;k < 3;k++) { if (dp[i - 1][k] == -INF) continue; dp[i][j] = max(dp[i][j], dp[i - 1][k] + score(i, j)); } cout << max(dp[N][0], max(dp[N][1], dp[N][2])) << endl; }