def sort(lst):
    """Standard merge sort.

    Args:
        lst: List to sort

    Returns:
        Sorted copy of the list
    """
    if len(lst) <= 1:
        return lst

    mid = len(lst) // 2
    low = sort(lst[:mid])
    high = sort(lst[mid:])

    res = []
    i = j = 0
    while i < len(low) and j < len(high):
        if low[i] < high[j]:
            res.append(low[i])
            i += 1
        else:
            res.append(high[j])
            j += 1

    res.extend(low[i:])
    res.extend(high[j:])

    return res