from typing import List


def generate_board(
    row: int,
    column: int,
) -> List[List[str]]:
    """
        Generate a new board in a row * column manner.

        Parameters
        ----------
        row: int
            A number that indicate how many row should be generated.

        column: int
            A numebr that indicated how many column should be generated.

        Returns
        -------
        board: List[List[str]]
            2D array containing all the game detail, including column header, row header and placed buildings.
    """

    board = []

    # * Preparation of the column header * #
    ordinal = ord('A')

    header_list = [' '] + [chr(ordinal + i) for i in range(column)]

    board.append(header_list)

    # * Preparation for each row * #
    for i in range(1, row + 1):
        row_list = [str(i)] + [' ' for _ in range(column)]

        board.append(row_list)

    return board