import bisect

num_of_students, num_of_schools, capacity = [int(i) for i in input().split(' ')]
second_priority_applicants = [[] for _ in range(num_of_schools)]

students = list()
for i in range(num_of_students):
    students.append(tuple(int(j)-1 for j in input().split(' ')))

current_school = [None] * num_of_students
capacities = [capacity] * num_of_schools

res_1 = 0

while True:
    valid = False
    # print('--------------------')
    for m in range(num_of_schools):
        # print(f"-> School {m} chooses:")
        if capacities[m] == 0:
            continue
        for i in range(num_of_students - 1, -1, -1):
            if students[i] is None:
                # this student was assigned with first priority
                continue
            if current_school[i] != m \
                    and (len(second_priority_applicants[m]) < capacities[m] or
                         second_priority_applicants[m][-1] > i) \
                    and (m in students[i]):

                # # print(current_school)
                if current_school[i] is not None:
                    index = bisect.bisect_left(second_priority_applicants[current_school[i]], i)
                    second_priority_applicants[current_school[i]].pop(index)
                    # print(f"Student {i} got deleted from list for school {current_school[i]} for school {m}")

                if len(second_priority_applicants[m]) >= capacities[m]:
                    # delete the worst student
                    worst = second_priority_applicants[m][-1]
                    second_priority_applicants[m].pop(-1)
                    # print(f"Worst student {worst} was deleted from school {m}")
                    current_school[worst] = None

                if students[i][0] == m:
                    # if first priority
                    # print(f"Student {i} got first priority to school {m}")
                    students[i] = None
                    capacities[m] -= 1
                    res_1 += 1
                else:
                    second_priority_applicants[m].insert(bisect.bisect_right(second_priority_applicants[m], i), i)
                    # print(f"Student {i} got second priority to school {m}")

                current_school[i] = m

                valid = True
                break
    # print(second_priority_applicants)
    if not valid:
        break

print(f"{res_1} {sum(len(l) for l in second_priority_applicants)}")
