n, m, b = tuple(map(int, input().split()))
PRS = [tuple(map(int, input().split())) for _ in range(n)]
C = [list(map(int, input().split()))+[0] for _ in range(n)]
D = [list(map(int, input().split()))+[0] for _ in range(n)]

max_purchase_amount = max(max(d) for d in D)

DP = [[None for _ in range(b + 1)] for _ in range(n + 1)]
def f(day: int, battery: int) -> int:
  if day == n:
    return 0
  if DP[day][battery] is not None:
    return DP[day][battery]

  p, r, s = PRS[day]
  used_solar = min(r, s)
  r -= used_solar
  s -= used_solar

  excess = battery + s

  best = f(day + 1, min(b, excess)) + r * p
  for purchased_power in range(r + b + max_purchase_amount + 1):
    excess_with_purchase = excess + purchased_power - r
    if excess_with_purchase < 0:
      continue
    for c, d in zip(C[day], D[day]):
      end_battery = min(b, excess_with_purchase - d)
      if end_battery < 0:
        continue
      best = min(best, f(day + 1, end_battery) - c + purchased_power * p)

  DP[day][battery] = best
  return DP[day][battery]

print(f(0, 0))
