output_description: Print the answer.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N K
      A_1 A_2 \dots A_N
attempt: from sys import stdin
  import itertools
  
  
  def cmb(n, r):
      if n < 2:
          return 0
      if n - r < r:
          r = n - r
      if r == 0:
          return 1
      if r == 1:
          return n
  
      numerator = [n - r + k + 1 for k in range(r)]
      denominator = [k + 1 for k in range(r)]
  
      for p in range(2, r + 1):
          pivot = denominator[p - 1]
          if pivot > 1:
              offset = (n - r) % p
              for k in range(p - 1, r, p):
                  numerator[k - offset] /= pivot
                  denominator[k] /= pivot
  
      result = 1
      for k in range(r):
          if numerator[k] > 1:
              result *= int(numerator[k])
      return result
  
  
  if __name__ == "__main__":
      N, K = [int(x) for x in stdin.readline().rstrip().split()]
      A = [int(x) for x in stdin.readline().rstrip().split()]
      A = sorted(A)
      MINUS = [x for x in A if x < 0]
      ZERO = [x for x in A if x == 0]
      PLUS = [x for x in A if x > 0]
      # print(MINUS)
      # print(ZERO)
      # print(PLUS)
  
      num_minus = len(MINUS) * len(PLUS)
      num_zero = len(MINUS) * len(ZERO) + len(PLUS) * len(ZERO) + cmb(len(ZERO), 2)
      num_plus = cmb(len(PLUS), 2) + cmb(len(MINUS), 2)
  
      # print(num_minus)
      # print(num_zero)
      # print(num_plus)
  
      # print('ALL {}'.format(num_minus + num_zero + num_plus))
  
      if K <= num_minus:
          counter = len(PLUS)
          for i, m in enumerate(MINUS):
              if counter < K:
                  counter += len(PLUS)
              else:
                  index = counter - K
                  print(m * PLUS[index])
      elif K <= num_minus + num_zero:
          print(0)
      else:
          index = K - num_minus - num_zero - 1
          a = list(itertools.combinations(PLUS, 2)) + list(
              itertools.combinations(MINUS, 2)
          )
          a = sorted([c[0] * c[1] for c in a])
          print(a[index])
  
problem_description: Statement
  
  We have N integers A_1, A_2, ..., A_N.
  
  There are \frac{N(N-1)}{2} ways to choose two of them and form a pair. If we
  compute the product of each of those pairs and sort the results in ascending
  order, what will be the K-th number in that list?
samples: [{"input": "4 3\n    3 3 -4 -2", "output": "-6\n    \n\nThere are six ways to form a pair. The products of those pairs are 9, -12, -6,\n-12, -6, 8.\n\nSorting those numbers in ascending order, we have -12, -12, -6, -6, 8, 9. The\nthird number in this list is -6.\n\n* * *"}, {"input": "10 40\n    5 4 3 2 -1 0 0 0 0 0", "output": "6\n    \n\n* * *"}, {"input": "30 413\n    -170202098 -268409015 537203564 983211703 21608710 -443999067 -937727165 -97596546 -372334013 398994917 -972141167 798607104 -949068442 -959948616 37909651 0 886627544 -20098238 0 -948955241 0 -214720580 277222296 -18897162 834475626 0 -425610555 110117526 663621752 0", "output": "448283280358331064"}]