#17D8103001E Fukushima Emi persimmon8 python 19.10.24

n=int(input())
A=list(map(int,input().split()))
count=0

def merge(A,left,mid,right):
    global count

    L=A[left:mid]+[10000000000000]
    R=A[mid:right]+[100000000000000]

    i=0
    j=0
    for k in range(left,right):
        count+=1
        if L[i]<=R[j]:
            A[k]=L[i]
            i=i+1
        else: 
            A[k]=R[j] 
            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)

mergeSort(A,0,n)
d=map(str,A)
print(' '.join(d))
print(count)
 n=int(input()) n int(input()) int input() input A=list(map(int,input().split())) A list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split count=0 count 0 def merge(A,left,mid,right):
    global count

    L=A[left:mid]+[10000000000000]
    R=A[mid:right]+[100000000000000]

    i=0
    j=0
    for k in range(left,right):
        count+=1
        if L[i]<=R[j]:
            A[k]=L[i]
            i=i+1
        else: 
            A[k]=R[j] 
            j=j+1 merge global count L=A[left:mid]+[10000000000000] L A[left:mid]+[10000000000000] A[left:mid] A left:mid left mid [10000000000000] 10000000000000 R=A[mid:right]+[100000000000000] R A[mid:right]+[100000000000000] A[mid:right] A mid:right mid right [100000000000000] 100000000000000 i=0 i 0 j=0 j 0 for k in range(left,right):
        count+=1
        if L[i]<=R[j]:
            A[k]=L[i]
            i=i+1
        else: 
            A[k]=R[j] 
            j=j+1 k range(left,right) range left right count+=1 count 1 if L[i]<=R[j]:
            A[k]=L[i]
            i=i+1
        else: 
            A[k]=R[j] 
            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=i+1 i i+1 i 1 A[k]=R[j] A[k] A k R[j] R j j=j+1 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 mergeSort(A,0,n) mergeSort A 0 n d=map(str,A) d map(str,A) map str A print(' '.join(d)) print ' '.join(d) ' '.join ' ' join d print(count) print count count=0 0 count A=list(map(int,input().split())) list(map(int,input().split())) A def merge(A,left,mid,right):
    global count

    L=A[left:mid]+[10000000000000]
    R=A[mid:right]+[100000000000000]

    i=0
    j=0
    for k in range(left,right):
        count+=1
        if L[i]<=R[j]:
            A[k]=L[i]
            i=i+1
        else: 
            A[k]=R[j] 
            j=j+1 def merge(A,left,mid,right):
    global count

    L=A[left:mid]+[10000000000000]
    R=A[mid:right]+[100000000000000]

    i=0
    j=0
    for k in range(left,right):
        count+=1
        if L[i]<=R[j]:
            A[k]=L[i]
            i=i+1
        else: 
            A[k]=R[j] 
            j=j+1 merge 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 n=int(input()) int(input()) n d=map(str,A) map(str,A) d
#17D8103001E Fukushima Emi persimmon8 python 19.10.24

n=int(input())
A=list(map(int,input().split()))
count=0

def merge(A,left,mid,right):
    global count

    L=A[left:mid]+[10000000000000]
    R=A[mid:right]+[100000000000000]

    i=0
    j=0
    for k in range(left,right):
        count+=1
        if L[i]<=R[j]:
            A[k]=L[i]
            i=i+1
        else: 
            A[k]=R[j] 
            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)

mergeSort(A,0,n)
d=map(str,A)
print(' '.join(d))
print(count)

