#include <bits/stdc++.h>
using namespace std;
long long read() {
  char c = 0;
  long long sum = 0;
  while (c < '0' || c > '9') c = getchar();
  while ('0' <= c && c <= '9') sum = sum * 10 + c - '0', c = getchar();
  return sum;
}
long long n, T, k, a[201 + 1], Sa[201 + 1], Sb[201 + 1], b[201 + 1], c[201 + 1],
    d[201 + 1][201 + 1][2], g[201 + 1][201 + 1][2];
signed main() {
  long long m, x;
  n = read(), T = read(), k = read();
  for (long long i = 1; i <= n; ++i)
    a[i] = read(), b[i] = read(), c[i] = read();
  ++n, a[n] = 1e10, b[n] = 1e10, c[n] = 1e15;
  for (long long i = 0; i <= T; ++i)
    for (long long j = 1; j <= n; ++j)
      for (long long t = 0; t <= 1; ++t) d[i][j][t] = g[i][j][t] = 1e15;
  for (long long i = 1; i <= n; ++i)
    Sa[i] = Sa[i - 1] + a[i], Sb[i] = Sb[i - 1] + b[i];
  for (long long i = 0; i <= T; ++i)
    for (long long j = 1; j <= n; ++j)
      for (long long t = 0; t <= 1; ++t) {
        if (d[i][j - 1][t] != 1e15 && a[j] * t + b[j] * i <= c[j]) {
          d[i][j][t] = min(d[i][j][t], d[i][j - 1][t]);
          if ((Sa[j - 1] * t + Sb[j - 1] * i + k - 1) / k * k <=
              Sa[j] * t + Sb[j] * i)
            g[i][j][t] =
                min(g[i][j][t], (Sa[j - 1] * t + Sb[j - 1] * i + k - 1) / k);
        }
        for (long long l = 0; l <= i - 1; ++l)
          if (d[i - l][j - 1][0] != 1e15) {
            m = Sa[j] * t + Sb[j] * l - g[l][j][t] * k,
            x = (max(m + b[j] * (i - l) - c[j], 0ll) + k - 1) / k;
            if (x * k <= m) {
              d[i][j][t] = min(d[i][j][t], g[l][j][t] + x + d[i - l][j - 1][0]);
              if ((Sb[j - 1] * (i - l) + k - 1) / k * k <=
                  Sb[j] * (i - l) + m - x * k)
                g[i][j][t] =
                    min(g[i][j][t],
                        g[l][j][t] + x + (Sb[j - 1] * (i - l) + k - 1) / k);
            }
          }
      }
  printf("%lld\n", d[T][n][1]);
  return 0;
}
