#include <bits/stdc++.h>
using namespace std;
const int N = 255;
using ll = long long;
ll a[N], b[N], sa[N], sb[N], lim[N], f[N][N][2], g[N][N][2];
int main() {
  ios::sync_with_stdio(false);
  int n, t, kk;
  cin >> n >> t >> kk;
  for (int i = 1; i <= n; i++) cin >> a[i] >> b[i] >> lim[i];
  ++n;
  a[n] = b[n] = INT_MAX;
  lim[n] = LLONG_MAX;
  partial_sum(a + 1, a + n + 1, sa + 1);
  partial_sum(b + 1, b + n + 1, sb + 1);
  memset(f, 63, sizeof(f));
  memset(g, 63, sizeof(g));
  const ll INF = f[0][0][0];
  memset(f[0], 0, sizeof(f[0]));
  memset(g[0], 0, sizeof(g[0]));
  for (int i = 1; i <= n; i++)
    for (int j = 0; j <= t; j++)
      for (int k = 0; k < 2; k++) {
        ll c1, c2, s1, s2;
        if (k * a[i] + j * b[i] <= lim[i] && f[i - 1][j][k] < INF) {
          f[i][j][k] = min(f[i][j][k], f[i - 1][j][k]);
          c1 = (k * sa[i - 1] + j * sb[i - 1] + kk - 1) / kk;
          if (c1 * kk <= k * a[i] + j * b[i]) g[i][j][k] = min(g[i][j][k], c1);
        }
        for (int l = 0; l < j; l++)
          if ((c1 = g[i][l][k]) < INF) {
            s1 = k * sa[i] + l * sb[i] - kk * c1;
            s2 = (max(0ll, s1 + (j - l) * b[i] - lim[i]) + kk - 1) / kk;
            if (s2 * kk <= s1 && f[i - 1][j - l][0] < INF) {
              f[i][j][k] = min(f[i][j][k], c1 + s2 + f[i - 1][j - l][0]);
              c2 = ((j - l) * sb[i - 1] + kk - 1) / kk;
              if (c2 * kk <= (j - l) * sb[i] + (s1 - s2 * kk))
                g[i][j][k] = min(g[i][j][k], c1 + s2 + c2);
            }
          }
      }
  cout << f[n][t][1] << endl;
  return 0;
}
