#include <bits/stdc++.h>
using namespace std;
const long long M = 305, inf = 1e18;
long long read() {
  long long x = 0, y = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') y = (ch == '-') ? -1 : 1, ch = getchar();
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  return x * y;
}
long long a[M], b[M], c[M], sa[M], sb[M], f[M][M][2], g[M][M][2];
signed main() {
  long long 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] = c[n] = inf;
  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 = 1; i <= n; i++)
    for (long long j = 0; j <= t; j++)
      for (long long fl = 0; fl <= 1; fl++) {
        f[i][j][fl] = g[i][j][fl] = inf;
        if (j * b[i] + fl * a[i] <= c[i] && f[i - 1][j][fl] != inf) {
          f[i][j][fl] = f[i - 1][j][fl];
          long long v = (fl * sa[i - 1] + j * sb[i - 1] + k - 1) / k;
          if (v * k <= fl * sa[i] + j * sb[i]) g[i][j][fl] = v;
        }
        for (long long l = 0; l <= j - 1; l++)
          if (g[i][l][fl] < inf) {
            long long v1 = fl * sa[i] + l * sb[i] - k * g[i][l][fl];
            long long v2 = (max(v1 + (j - l) * b[i] - c[i], 0ll) + k - 1) / k;
            if (v2 * k <= v1 && f[i - 1][j - l][0] < inf) {
              f[i][j][fl] =
                  min(f[i][j][fl], g[i][l][fl] + v2 + f[i - 1][j - l][0]);
              long long v = ((j - l) * sb[i - 1] + k - 1) / k;
              if (v * k <= (j - l) * sb[i] + v1 - v2 * k)
                g[i][j][fl] = min(g[i][j][fl], g[i][l][fl] + v2 + v);
            }
          }
      }
  printf("%lld\n", f[n][t][1]);
}
