#include <bits/stdc++.h>
using namespace std;
const long long inf = 2e15;
int n, t, k, a[205], b[205];
long long sa[205], sb[205], c[205], f[205][205][2], g[205][205][2];
int read() {
  int x = 0, fl = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') fl = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = (x << 1) + (x << 3) + ch - '0';
    ch = getchar();
  }
  return x * fl;
}
long long up(long long x) { return (long long)(x + k - 1) / k; }
int main() {
  n = read(), t = read(), k = read();
  for (int i = 1; i <= n; i++) a[i] = read(), b[i] = read(), c[i] = read();
  n++, a[n] = 2e9, b[n] = 2e9, c[n] = inf;
  for (int i = 1; i <= n; i++)
    sa[i] = sa[i - 1] + a[i], sb[i] = sb[i - 1] + b[i];
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= t; j++) {
      for (int o = 0; o <= 1; o++) {
        f[i][j][o] = g[i][j][o] = inf;
        if (1ll * o * a[i] + 1ll * j * b[i] <= c[i] && f[i - 1][j][o] < inf) {
          f[i][j][o] = min(f[i][j][o], f[i - 1][j][o]);
          long long p = up(o * sa[i - 1] + j * sb[i - 1]);
          if (1ll * p * k <= 1ll * o * sa[i] + 1ll * j * sb[i])
            g[i][j][o] = min(g[i][j][o], p);
        }
        for (int r = 0; r <= j - 1; r++) {
          long long p = g[i][r][o],
                    rst = 1ll * o * sa[i] + 1ll * r * sb[i] - k * p;
          if (p < inf) {
            long long nd = up(max(0ll, rst + 1ll * (j - r) * b[i] - c[i]));
            if (1ll * nd * k <= rst && f[i - 1][j - r][0] < inf) {
              f[i][j][o] = min(f[i][j][o], p + nd + f[i - 1][j - r][0]);
              long long q = up(1ll * (j - r) * sb[i - 1]);
              if (1ll * q * k <= 1ll * (j - r) * sb[i] + (rst - 1ll * nd * k))
                g[i][j][o] = min(g[i][j][o], p + nd + q);
            }
          }
        }
      }
    }
  }
  printf("%lld\n", f[n][t][1]);
  return 0;
}
