def merge(A, left, mid, right):
    global c
    n1 = mid - left
    n2 = right - mid
    L = [0 for e in range(n1+1)]
    R = [0 for e in range(n2+1)]
    L = A[left:mid] + [10 ** 9]
    R = A[mid:right] + [10 ** 9]
    i = 0
    j = 0
    for k in range(left,right):
        if L[i] <= R[j]:
          A[k] = L[i]
          i = i + 1
        else:
          A[k] = R[j]
          j = j + 1
    c += right - left

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)

if __name__ == "__main__":
    n = int(input())
    S = [int(e) for e in input().split()]
    c = 0
    mergeSort(S,0,n)
    print(*S)
    print(c) def merge(A, left, mid, right):
    global c
    n1 = mid - left
    n2 = right - mid
    L = [0 for e in range(n1+1)]
    R = [0 for e in range(n2+1)]
    L = A[left:mid] + [10 ** 9]
    R = A[mid:right] + [10 ** 9]
    i = 0
    j = 0
    for k in range(left,right):
        if L[i] <= R[j]:
          A[k] = L[i]
          i = i + 1
        else:
          A[k] = R[j]
          j = j + 1
    c += right - left merge global c n1 = mid - left n1 mid - left mid left n2 = right - mid n2 right - mid right mid 0 for e in range(n1+1) for e in range(n1+1) e range(n1+1) range n1+1 n1 1 for e in range(n1+1) 0 L = [0 for e in range(n1+1)] L [0 for e in range(n1+1)] 0 for e in range(n2+1) for e in range(n2+1) e range(n2+1) range n2+1 n2 1 for e in range(n2+1) 0 R = [0 for e in range(n2+1)] R [0 for e in range(n2+1)] L = A[left:mid] + [10 ** 9] L A[left:mid] + [10 ** 9] A[left:mid] A left:mid left mid [10 ** 9] 10 ** 9 10 9 R = A[mid:right] + [10 ** 9] R A[mid:right] + [10 ** 9] A[mid:right] A mid:right mid right [10 ** 9] 10 ** 9 10 9 i = 0 i 0 j = 0 j 0 for k in range(left,right):
        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 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 c += right - left c right - left right left 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 if __name__ == "__main__":
    n = int(input())
    S = [int(e) for e in input().split()]
    c = 0
    mergeSort(S,0,n)
    print(*S)
    print(c) __name__ == "__main__" __name__ "__main__" n = int(input()) n int(input()) int input() input int(e) for e in input().split() for e in input().split() e input().split() ().split () input split for e in input().split() int(e) int e S = [int(e) for e in input().split()] S [int(e) for e in input().split()] c = 0 c 0 mergeSort(S,0,n) mergeSort S 0 n print(*S) print *S S print(c) print c S = [int(e) for e in input().split()] [int(e) for e in input().split()] S c = 0 0 c def merge(A, left, mid, right):
    global c
    n1 = mid - left
    n2 = right - mid
    L = [0 for e in range(n1+1)]
    R = [0 for e in range(n2+1)]
    L = A[left:mid] + [10 ** 9]
    R = A[mid:right] + [10 ** 9]
    i = 0
    j = 0
    for k in range(left,right):
        if L[i] <= R[j]:
          A[k] = L[i]
          i = i + 1
        else:
          A[k] = R[j]
          j = j + 1
    c += right - left def merge(A, left, mid, right):
    global c
    n1 = mid - left
    n2 = right - mid
    L = [0 for e in range(n1+1)]
    R = [0 for e in range(n2+1)]
    L = A[left:mid] + [10 ** 9]
    R = A[mid:right] + [10 ** 9]
    i = 0
    j = 0
    for k in range(left,right):
        if L[i] <= R[j]:
          A[k] = L[i]
          i = i + 1
        else:
          A[k] = R[j]
          j = j + 1
    c += right - left 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
def merge(A, left, mid, right):
    global c
    n1 = mid - left
    n2 = right - mid
    L = [0 for e in range(n1+1)]
    R = [0 for e in range(n2+1)]
    L = A[left:mid] + [10 ** 9]
    R = A[mid:right] + [10 ** 9]
    i = 0
    j = 0
    for k in range(left,right):
        if L[i] <= R[j]:
          A[k] = L[i]
          i = i + 1
        else:
          A[k] = R[j]
          j = j + 1
    c += right - left

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)

if __name__ == "__main__":
    n = int(input())
    S = [int(e) for e in input().split()]
    c = 0
    mergeSort(S,0,n)
    print(*S)
    print(c)
