import functools, sys
sys.setrecursionlimit(10**5)

@functools.lru_cache(maxsize=None)
def solve(i, charge):
  if i == N: return 0

  best = 10**9

  for nc in range(B+1):
    for j in range(M+1):
      net = charge+s[i]-r[i]-nc-d[i][j]
      cost = p[i]*max(0, -net)-c[i][j]
      best = min(best, cost + solve(i+1, nc))

  return best

N, M, B = map(int, input().split())
p, r, s = [0]*N, [0]*N, [0]*N
for i in range(N): p[i], r[i], s[i] = map(int, input().split())

c = [[0]+list(map(int, input().split())) for _ in range(N)]
d = [[0]+list(map(int, input().split())) for _ in range(N)]

print(solve(0,0))
