from typing import Tuple


def get_children(index: int, limit: int) -> Tuple[int, int]:
    """Returns the two children of the node at the index of the binary heap node

    The node at the index 'index' is retrieved and its children are returned.
    The limit must be the length of the binary heap.

    Parameters
    ----------
    index : int
        The parent node to get the children from
    limit : int
        The length of the binary heap

    Returns
    -------
    Tuple[int, int]
        A Tuple with the index of the two children. If there are only two Nodes
        on the binary heap, where the first is the parent, this function returns
        the only child twice, one in the original position and one in the position
        of the other child.

    Raises
    ------
    IndexError
        If the child index is out of limit, then there is no child actually
    """
    if limit == 2:
        return (1, 1)
    elif 2 * index + 2 < limit:
        return (2 * index + 1, 2 * index + 2)
    raise IndexError("Index out of range")