from typing import List
from typing import Tuple


def split_stack(stack: List, num_removed: int) -> Tuple[List, List]:
    """Splits a list into two sub-lists.

    Args:
        stack: A List to be split
        num_removed: An int representing how many items to remove from the end.

    Returns:
        A tuple containing two lists.  The first list is the items remaining on the square, the
        second list is the items that have been picked up as part of a Move action.

    Raises:
        RuntimeError: Error raised if num_removed is less than 1 or greater than the length of the
        list.
    """
    if num_removed > len(stack) or num_removed < 1:
        raise RuntimeError("num_removed out of bounds")

    split_index = len(stack) - num_removed

    picked_up = stack[split_index:]
    remaining = stack[:split_index]

    return (remaining, picked_up)