def merge(a1, a2):
 
    sorted_array = []
    i = j = 0
 
    while i < len(a1) and j < len(a2):
        if a1[i] < a2[j]:
            sorted_array.append(a1[i])
            i += 1
        else:
            sorted_array.append(a2[j])
            j += 1
 
    sorted_array.extend(a1[i:])
    sorted_array.extend(a2[j:])
 
    return sorted_array
 
def mergesort(array):
    if len(array) == 1:
        return array
    elif len(array) == 2:
        if array[0] > array[1]:
            return [array[1], array[0]]
        else:
            return array
    else:
        mid = len(array) // 2
        return merge(mergesort(array[:mid]), mergesort(array[mid:]))
 
print(mergesort([3,8,1,4,2,7,5]))