func_code_string: #include <bits/stdc++.h>   using namespace std;   inline long long gcd(long long x, long long y) { return x ? gcd(y % x, x) : y; }   const long long mod = 1e9 + 7;   inline signed rd() {     signed ans = 0;     char last =    , ch = getchar();     while (!(ch >=  0  && ch <=  9 )) last = ch, ch = getchar();     while (ch >=  0  && ch <=  9 ) ans = ans * 10 + ch -  0 , ch = getchar();     if (last ==  - ) ans = -ans;     return ans;   }   inline long long QPow(long long a, long long b) {     long long ans = 1;     while (b) {       if (b & 1) ans = ans * a % mod;       a = a * a % mod;       b >>= 1;     }     return ans;   }   inline long long QPow(long long a, long long b, const long long &mod) {     long long ans = 1;     while (b) {       if (b & 1) ans = ans * a % mod;       a = a * a % mod;       b >>= 1;     }     return ans;   }   long long exgcd(long long a, long long b, long long &x, long long &y) {     long long d = a;     if (b == 0)       x = 1, y = 0;     else {       d = exgcd(b, a % b, y, x), y -= a / b * x;     }     return d;   }   const long double PI = 3.141592653589793115997963468544185161590576171875;   const long long maxn = 100005;   struct Req {     long long s, a, b;     bool friend operator<(const Req &a, const Req &b) {       return (a.b - a.a) > (b.b - b.a);     }   } reqs[maxn];   long long arr[maxn];   long long rarr[maxn];   long long cnt[maxn];   signed main() {     ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);     long long t, m, n, R, s;     long long k;     cin >> n >> s;     for (long long i = 1; i <= n; i++) cin >> reqs[i].s >> reqs[i].a >> reqs[i].b;     long long ans = 0;     long long sum = 0;     for (long long i = 1; i <= n; i++)       ans += reqs[i].a * reqs[i].s, sum += reqs[i].s;     sort(reqs + 1, reqs + 1 + n);     for (long long i = 1; i <= n; i++)       arr[i] = reqs[i].b - reqs[i].a, cnt[i] = reqs[i].s;     for (long long i = 1; i <= n; i++) rarr[i] = arr[n - i + 1];     signed id = 1;     while (arr[id] > 0) id++;     id--;     long long tot = 0;     long long tmp = ans;     for (long long i = 1; i <= id; i++) {       tot += cnt[i];       tmp += arr[i] * cnt[i];     }     long long num = (tot + s - 1) / s;     num *= s;     long long tmp3 = tmp;     long long re = sum % s;     num -= tot;     num -= (s - re) % s;     for (long long i = id + 1; i <= n; i++) {       if (num <= 0) break;       long long tmp1 = min(num, cnt[i]);       num -= tmp1;       tmp3 += tmp1 * arr[i];       if (num <= 0) break;     }     num = (tot + s - 1) / s;     num *= s;     num -= s;     long long tmp4 = ans;     for (long long i = 1; i <= n; i++) {       if (num <= 0) break;       long long tmp2 = min(cnt[i], num);       num -= tmp2;       tmp4 += tmp2 * arr[i];       if (num == 0) break;     }     ans = max(ans, max(tmp4, tmp3));     cout << ans << endl;     return 0;   }   