# coding=utf-8

def merge(l1,l2):
    if l1==[]:
        return l2
    elif l2==[]:
        return l1
    elif l1[0]<l2[0]:
        return [l1[0]]+merge(l1[1:],l2)
    else:
        return [l2[0]]+merge(l1,l2[1:])
    
def m_sort(l):
    if len(l)<=1:
        return l # posortowana
    else: #len(l) >= 2
        l1=l[:len(l)/2] #pierwsza połówka
        l2=l[len(l)/2:] # druga połówka
        return merge(m_sort(l1),m_sort(l2))