from typing import List
from typing import Union


def find_k_largest(sequence: List[int], k: int = 1) -> Union[List[int], None]:
    """Returns a sorted list of the k-largest elements in the sequence of natural numbers.
    If k is greater than the length of the sequence, returns the sorted sequence.
    For an empty sequence returns empty list.
    For k<1 returns None

    >>> find_k_largest([1,8,3,5])
    [8]
    >>> find_k_largest([1,8,3,5], 2)
    [8, 5]
    >>> find_k_largest([1,8,3,5], 6)
    [8, 5, 3, 1]
    >>> find_k_largest([1,5,5,5], 2)
    [5, 5]
    >>> find_k_largest([])
    []
    >>> find_k_largest([1,5,5,5], -1)
    """
    if k < 1:
        return None
    if not sequence:
        return []

    maximums = [-1] * k if k < len(sequence) else [-1] * len(sequence)

    for elem in sequence:
        for n in range(len(maximums)):
            if elem > maximums[n]:
                maximums[n], elem = elem, maximums[n]

    return maximums