program ABC149E
    implicit none
    integer(16)::N,M
    integer(16),allocatable,dimension(:)::A,R
    integer(16)::ans,OK,NG,MD,tmp
    integer(16)::i,j
    read*,N,M
    allocate(A(N))
    read*,A
    call heapsort(N,A)
    allocate(R(200000+1))
    R=0
    do i=1,N
        R(A(i))=R(A(i))+1
    end do
    do i=2*10**5,1,-1
        R(i)=R(i)+R(i+1)
    end do
    
    OK=0;NG=A(N)*2+1
    MD=(OK+NG)/2
    do while(NG-OK>1)
        if(CNT(MD)>=M)then
            OK=MD
        else
            NG=MD
        endif
        MD=(OK+NG)/2
    end do

    ans=0
    do i=1,N
        if(A(i)>=MD)then
            tmp=N
        else
            tmp=R(MD-A(i))
        endif
        ans=ans+tmp*A(i)*2
    end do
    print"(i0)",ans-MD*(cnt(MD)-M)
contains
integer(16) function cnt(MID)
    integer(16),intent(in)::MID
    integer(16)::ii
    cnt=0
    do ii=1,N
        if(MID>A(ii))then
            cnt=cnt+R(MID-A(ii))
        else
            cnt=cnt+N
        endif
    end do
end function
subroutine heapsort(n,array)
  implicit none
!ここの入力は状況に応じて変更すること
  integer(16),intent(in) :: n
  integer(16),intent(inout) :: array(1:n)
  integer(16)::i,k,j,l
  integer(16):: t
  l=n/2+1
  k=n
  do while(k /= 1)
     if(l > 1)then
        l=l-1
        t=array(L)
     else
        t=array(k)
        array(k)=array(1)
        k=k-1
        if(k == 1) then
           array(1)=t
           exit
        endif
     endif
     i=l
     j=l+l
     do while(j<=k)
        if(j < k)then
           if(array(j) < array(j+1))j=j+1
        endif
        if (t < array(j))then
           array(i)=array(j)
           i=j
           j=j+j
        else
           j=k+1
        endif
     enddo
     array(i)=t
  enddo
  return
end subroutine heapsort
end program ABC149E