def merge(A,left,mid,right):
    global cnt
    L=A[left:mid]
    R=A[mid:right]
    L.append(float("inf"))
    R.append(float("inf"))
    i=0
    j=0
    for k in range(left, right):
        cnt+=1
        if L[i]<=R[j]:
            A[k]=L[i]
            i+=1
        else:
            A[k]=R[j]
            j+=1
            
def mergeSort(A,left,right):
        if left+1<right:
            mid=(left+right)//2
            mergeSort(A,left,mid)
            mergeSort(A,mid,right)
            merge(A,left,mid,right)   
            
n = int(input())
S=list(map(int,input().split()))
cnt=0

mergeSort(S,0,n)

print(" ".join(map(str,S)))
print(cnt) def merge(A,left,mid,right):
    global cnt
    L=A[left:mid]
    R=A[mid:right]
    L.append(float("inf"))
    R.append(float("inf"))
    i=0
    j=0
    for k in range(left, right):
        cnt+=1
        if L[i]<=R[j]:
            A[k]=L[i]
            i+=1
        else:
            A[k]=R[j]
            j+=1
             merge global cnt L=A[left:mid] L A[left:mid] A left:mid left mid R=A[mid:right] R A[mid:right] A mid:right mid right L.append(float("inf")) L.append L append float("inf") float "inf" R.append(float("inf")) R.append R append float("inf") float "inf" i=0 i 0 j=0 j 0 for k in range(left, right):
        cnt+=1
        if L[i]<=R[j]:
            A[k]=L[i]
            i+=1
        else:
            A[k]=R[j]
            j+=1
             k range(left, right) range left right cnt+=1 cnt 1 if L[i]<=R[j]:
            A[k]=L[i]
            i+=1
        else:
            A[k]=R[j]
            j+=1
             L[i]<=R[j] L[i] L i R[j] R j A[k]=L[i] A[k] A k L[i] L i i+=1 i 1 A[k]=R[j] A[k] A k R[j] R j j+=1 j 1 A A left left mid mid right right def mergeSort(A,left,right):
        if left+1<right:
            mid=(left+right)//2
            mergeSort(A,left,mid)
            mergeSort(A,mid,right)
            merge(A,left,mid,right)   
             mergeSort if left+1<right:
            mid=(left+right)//2
            mergeSort(A,left,mid)
            mergeSort(A,mid,right)
            merge(A,left,mid,right)   
             left+1<right left+1 left 1 right mid=(left+right)//2 mid (left+right)//2 left+right left right 2 mergeSort(A,left,mid) mergeSort A left mid mergeSort(A,mid,right) mergeSort A mid right merge(A,left,mid,right) merge A left mid right A A left left right right n = int(input()) n int(input()) int input() input S=list(map(int,input().split())) S list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split cnt=0 cnt 0 mergeSort(S,0,n) mergeSort S 0 n print(" ".join(map(str,S))) print " ".join(map(str,S)) " ".join " " join map(str,S) map str S print(cnt) print cnt def merge(A,left,mid,right):
    global cnt
    L=A[left:mid]
    R=A[mid:right]
    L.append(float("inf"))
    R.append(float("inf"))
    i=0
    j=0
    for k in range(left, right):
        cnt+=1
        if L[i]<=R[j]:
            A[k]=L[i]
            i+=1
        else:
            A[k]=R[j]
            j+=1
             def merge(A,left,mid,right):
    global cnt
    L=A[left:mid]
    R=A[mid:right]
    L.append(float("inf"))
    R.append(float("inf"))
    i=0
    j=0
    for k in range(left, right):
        cnt+=1
        if L[i]<=R[j]:
            A[k]=L[i]
            i+=1
        else:
            A[k]=R[j]
            j+=1
             merge n = int(input()) int(input()) n cnt=0 0 cnt def mergeSort(A,left,right):
        if left+1<right:
            mid=(left+right)//2
            mergeSort(A,left,mid)
            mergeSort(A,mid,right)
            merge(A,left,mid,right)   
             def mergeSort(A,left,right):
        if left+1<right:
            mid=(left+right)//2
            mergeSort(A,left,mid)
            mergeSort(A,mid,right)
            merge(A,left,mid,right)   
             mergeSort S=list(map(int,input().split())) list(map(int,input().split())) S
def merge(A,left,mid,right):
    global cnt
    L=A[left:mid]
    R=A[mid:right]
    L.append(float("inf"))
    R.append(float("inf"))
    i=0
    j=0
    for k in range(left, right):
        cnt+=1
        if L[i]<=R[j]:
            A[k]=L[i]
            i+=1
        else:
            A[k]=R[j]
            j+=1
            
def mergeSort(A,left,right):
        if left+1<right:
            mid=(left+right)//2
            mergeSort(A,left,mid)
            mergeSort(A,mid,right)
            merge(A,left,mid,right)   
            
n = int(input())
S=list(map(int,input().split()))
cnt=0

mergeSort(S,0,n)

print(" ".join(map(str,S)))
print(cnt)