#include <bits/stdc++.h>
using namespace std;
inline void cm(long long &x, long long v) { x = min(x, v); }
int n, m, K;
long long f[212][212][2], g[212][212][2], a[212], b[212], c[212], sa[212],
    sb[212];
int main() {
  memset(f, 0x3f, sizeof(f));
  memset(f[0], 0, sizeof(f[0]));
  memset(g, 0x3f, sizeof(g));
  memset(g[0], 0, sizeof(g[0]));
  scanf("%d%d%d", &n, &m, &K);
  int i, j, k;
  long long v1, v2, s1, s2, l, r;
  for (i = 1; i <= n; i++) scanf("%lld%lld%lld", &a[i], &b[i], &c[i]);
  ++n;
  a[n] = 1e15;
  b[n] = 0;
  c[n] = a[n] + 1;
  for (i = 1; i <= n; i++) sa[i] = sa[i - 1] + a[i], sb[i] = sb[i - 1] + b[i];
  for (i = 1; i <= m; i++) {
    g[i][0][0] = g[i][0][1] = 0;
    for (j = 1; j <= n; j++) {
      if (((v1 = g[i][j - 1][0]) < 0x3f3f3f3f3f3f3f3f) && (b[j] * i <= c[j]))
        g[i][j][0] = v1, g[i][j][1] = b[j] * i;
      for (k = 0; k < i; k++)
        if (((v1 = g[k][j][0]) < 0x3f3f3f3f3f3f3f3f) &&
            ((v2 = g[i - k][j - 1][0]) < 0x3f3f3f3f3f3f3f3f)) {
          s2 = g[k][j][1];
          s1 = sb[j] * k - v1 * K - s2;
          l = max(s1 / K + 1, (s1 + s2 + b[j] * (i - k) - c[j] - 1) / K + 1);
          r = (s1 + s2) / K;
          if ((l <= r) && (v1 + v2 + l < g[i][j][0]))
            g[i][j][0] = v1 + v2 + l,
            g[i][j][1] = s2 - l * K + s1 + b[j] * (i - k);
        }
    }
  }
  for (i = 1; i <= n; i++) f[0][i][1] = a[i];
  for (i = 1; i <= m; i++) {
    f[i][0][0] = f[i][0][1] = 0;
    for (j = 1; j <= n; j++) {
      if (((v1 = f[i][j - 1][0]) < 0x3f3f3f3f3f3f3f3f) &&
          (a[j] + b[j] * i <= c[j]))
        f[i][j][0] = v1, f[i][j][1] = a[j] + b[j] * i;
      for (k = 0; k < i; k++)
        if (((v1 = f[k][j][0]) < 0x3f3f3f3f3f3f3f3f) &&
            ((v2 = g[i - k][j - 1][0]) < 0x3f3f3f3f3f3f3f3f)) {
          s2 = f[k][j][1];
          s1 = sa[j] + sb[j] * k - v1 * K - s2;
          l = max(s1 / K + 1, (s1 + s2 + b[j] * (i - k) - c[j] - 1) / K + 1);
          r = (s1 + s2) / K;
          if ((l <= r) && (v1 + v2 + l < f[i][j][0]))
            f[i][j][0] = v1 + v2 + l,
            f[i][j][1] = s2 - l * K + s1 + b[j] * (i - k);
        }
    }
  }
  printf("%lld", f[m][n][0]);
  return 0;
}
