Загрузка данных


import sys


def main():
    n, m, k = map(int, sys.stdin.read().split()[:3])
    total = k - 1 + n
    rows = (total + m - 1) // m
    grid = [[False] * m for _ in range(rows)]
    for d in range(n):
        p = k - 1 + d
        grid[p // m][p % m] = True

    best = 0
    heights = [0] * m
    for r in range(rows):
        for c in range(m):
            heights[c] = heights[c] + 1 if grid[r][c] else 0
        stack = []
        for c in range(m + 1):
            h = heights[c] if c < m else 0
            start = c
            while stack and stack[-1][1] >= h:
                start, sh = stack.pop()
                best = max(best, sh * (c - start))
            stack.append((start, h))
    print(best)


main()