program pairs
  implicit none
  integer :: n, i
  integer(8) :: k, l = -1e18, r = 1e18, m, c
  integer(8), dimension(200000) :: a = 0, b = 0
  read(*,*) n, k
  read(*,*) a(1:n)
  call quick_sort(a(1:n))
  do while (r-l > 1)
    m = (l+r)/2
    c = 0
    do i = 1, n
      if (a(i) < 0) then
        c = c+count_lower(a(n:i+1:-1),a(i),m)
      else
        c = c+count_lower(a(i+1:n),a(i),m)
      end if
    end do
    if (c < k) then
      l = m
    else
      r = m
    end if
  end do
  write(*,'(i0)') l
contains
  function count_lower(a,b,c) result(r)
    integer(8), intent(in) :: a(:), b, c
    integer :: l, r, m
    l = 0
    r = size(a)+1
    do while (r-l > 1)
      m = (l+r)/2
      if (a(m)*b < c) then
        l = m
      else
        r = m
      end if
    end do
    r = r-1
  end
  recursive subroutine quick_sort(a)
    integer(8), intent(inout) :: a(:)
    integer :: n, l, r, m
    integer(8) :: p
    n = size(a,1)
    l = 1
    r = n
    m = (n+1)/2
    p = a(l)+a(m)+a(r)-max(a(l),a(m),a(r))-min(a(l),a(m),a(r))
    do
      do while (a(l) < p)
        l = l+1
      end do
      do while (a(r) > p)
        r = r-1
      end do
      if (l >= r) exit
      a(l) = xor(a(l),a(r))
      a(r) = xor(a(l),a(r))
      a(l) = xor(a(l),a(r))
      l = l+1
      r = r-1
    end do
    if (l-1 > 1) call quick_sort(a(1:l-1))
    if (n > r+1) call quick_sort(a(r+1:n))
  end
end program pairs