1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# import sys
# sys.stdin = open("tra.txt", "r")

def generate_bounded_tuples(n_elements, total_sum, max_val, current_tuple=None):
    if current_tuple is None:
        current_tuple = []
    
    if n_elements == 1:
        if 0 <= total_sum <= max_val:
            yield tuple(current_tuple + [total_sum])
        return

    upper_bound = min(max_val, total_sum)
    
    for i in range(upper_bound + 1):
        yield from generate_bounded_tuples(
            n_elements - 1, 
            total_sum - i, 
            max_val, 
            current_tuple + [i]
        )

n, m, k = map(int, input().split())
stossum = []
for i in range(n):
    stos = list(map(int, input().split()))
    sumc = [0]
    for i in range(m):
        sumc.append(stos[i]+sumc[i])
    stossum.append(sumc)

rozmiar = 0
for t in generate_bounded_tuples(n, k, m):
    suma = sum([stossum[index][wart] for index, wart in enumerate(t)])
    rozmiar = max(rozmiar, suma)

print(rozmiar)