def split(list_a: list, length_of_first: int):
    """Problem 17: Split a list in two parts; the length of the first list is given.

    Parameters
    ----------
    list_a : list
        The input list
    length_of_first : int
        The desired length of the first output list

    Returns
    -------
    (list, list)
        A tuple of lists

    Raises
    ------
    TypeError
        If the given argument is not of `list` type
    ValueError
        If the given `n` is greater than the list's length or smaller than 1

    """
    if not isinstance(list_a, list):
        raise TypeError('The argument given is not of `list` type.')
    if length_of_first > len(list_a) or length_of_first < 0:
        raise ValueError('The value of `l` is not valid.')

    return list_a[:length_of_first], list_a[length_of_first:]