import math

R = lambda: map(int, input().split())

n, m, b = R()

data = [tuple(R()) for _ in range(n)]

prices = [list(R()) for _ in range(n)]
amt = [list(R()) for _ in range(n)]

bat = [math.inf]*(b+1)
bat[0] = 0

for i, (p, r, s) in enumerate(data):
    new_bat = [math.inf]*(b+1)
    
    shift=s-r

    for in_bat in range(b+1):
        for out_bat in range(b+1):
            excess = in_bat + s - r - out_bat
            new_bat[out_bat] = min(new_bat[out_bat], bat[in_bat] + p*max(0, -excess))

            for income, sold in zip(prices[i], amt[i]):
                if sold > excess: break
                new_bat[out_bat] = min(new_bat[out_bat], bat[in_bat] - income + p*max(0, -(excess - sold)))

    bat = new_bat

    # backwards pass
    for bi in range(b-1,-1,-1):
        bat[bi] = min(bat[bi], bat[bi+1])

print(min(bat))

    
