#!python3



iim = lambda: list(map(int, input().rstrip().split()))



inf = 10**18 + 1



def cnt_val(a, b, x, cache):

    ans = 0

    la, lb = len(a), len(b)

    J = (i for i in range(lb)) if a == b else (-1 for i in range(la))



    if len(cache) == 0:

        ca = [x, 0]

        cb = [inf, lb-1]

        cache.append(ca)

        cache.append(cb)

    else:

        ca, cb = cache

        if x <= ca[0]:

            cache[0], cache[1] = ca, cb = cb, ca

        ca[0] = x



    j = cb[1]

    #for i in range(la):

    for i, k in enumerate(J):

        xa = a[i]



        for j in range(j, k, -1):

            x1 = b[j] * xa

            if x1 <= x:

                break

        else:

            break

        ans += j - k

        if i == 0:

            ca[1] = j



    return ans



def resolve():

    N, K = iim()

    A = [[] for i in range(3)]

    for x in input().split():

        x = int(x)

        if x < 0:

            i = 0

        elif x == 0:

            i = 1

        else:

            i = 2



        A[i].append(x)



    a0 = len(A[0]) * len(A[2])

    s1 = len(A[1])

    a1 = s1 * (2*N - s1 -1) // 2

    K1 = K - 1



    if a0 < K1 < a0 + a1:

        print((0))

        return



    if K1 < a0:

        A[0].sort()

        A[2].sort(reverse=True)

        #print(A[0], A[2])

        lo, hi = A[0][0]*A[2][0], A[0][-1] * A[2][-1] + 1

        cache1 = []

        #print((lo, hi), K1)

        while lo < hi:

            mid = (lo + hi) // 2

            k = cnt_val(A[0], A[2], mid, cache1)

            #print((lo, hi), mid, k, K1)

            if k <= K1:

                lo = mid + 1

            else:

                hi = mid

        print(lo)

        return



    A0 = list([-x for x in A[0]])

    A0.sort()

    A[2].sort()

    K3 = K - a0 - a1 - 1

    #print(A[0], A[2], a0, a1, K3)

    lo, hi = 0, 10**18

    cache1, cache2 = [], []

    while lo < hi:

        mid = (lo + hi) // 2

        k3 = cnt_val(A0, A0, mid, cache1) + cnt_val(A[2], A[2], mid, cache2)

        #print((lo, hi), k3, K3)

        if k3 <= K3:

            lo = mid + 1

        else:

            hi = mid

    print(lo)



if __name__ == "__main__":

    resolve()

#!python3



iim = lambda: list(map(int, input().rstrip().split()))



inf = 10**18 + 1



def cnt_val(a, b, x):

    ans = 0

    la, lb = len(a), len(b)

    J = (i for i in range(lb)) if a == b else (-1 for i in range(la))



    j = lb - 1

    for i, k in enumerate(J):

        xa = a[i]



        for j in range(j, k, -1):

            x1 = b[j] * xa

            if x1 <= x:

                break

        else:

            break

        ans += j - k



    return ans



def resolve():

    N, K = iim()

    A = [[] for i in range(3)]

    for x in input().split():

        x = int(x)

        if x < 0:

            i = 0

        elif x == 0:

            i = 1

        else:

            i = 2



        A[i].append(x)



    a0 = len(A[0]) * len(A[2])

    s1 = len(A[1])

    a1 = s1 * (2*N - s1 -1) // 2

    K1 = K - 1



    if a0 < K1 < a0 + a1:

        print((0))

        return



    if K1 < a0:

        A[0].sort()

        A[2].sort(reverse=True)

        #print(A[0], A[2])

        lo, hi = A[0][0]*A[2][0], A[0][-1] * A[2][-1] + 1

        #print((lo, hi), K1)

        while lo < hi:

            mid = (lo + hi) // 2

            k = cnt_val(A[0], A[2], mid)

            #print((lo, hi), mid, k, K1)

            if k <= K1:

                lo = mid + 1

            else:

                hi = mid

        print(lo)

        return



    A0 = list([-x for x in A[0]])

    A0.sort()

    A[2].sort()

    K3 = K - a0 - a1 - 1

    #print(A[0], A[2], a0, a1, K3)

    lo, hi = 0, 10**18

    while lo < hi:

        mid = (lo + hi) // 2

        k3 = cnt_val(A0, A0, mid) + cnt_val(A[2], A[2], mid)

        #print((lo, hi), k3, K3)

        if k3 <= K3:

            lo = mid + 1

        else:

            hi = mid

    print(lo)



if __name__ == "__main__":

    resolve()

#!python3
iim = lambda: list(map(int, input().rstrip().split()))
inf = 10**18 + 1


def cnt_val(a, b, x, cache):
    ans = 0
    la, lb = len(a), len(b)
    J = (i for i in range(lb)) if a == b else (-1 for i in range(la))
    if len(cache) == 0:
        ca = [x, 0]
        cb = [inf, lb - 1]
        cache.append(ca)
        cache.append(cb)
    else:
        ca, cb = cache
        if x <= ca[0]:
            cache[0], cache[1] = ca, cb = cb, ca
        ca[0] = x
    j = cb[1]
    # for i in range(la):
    for i, k in enumerate(J):
        xa = a[i]
        for j in range(j, k, -1):
            x1 = b[j] * xa
            if x1 <= x:
                break
        else:
            break
        ans += j - k
        if i == 0:
            ca[1] = j
    return ans


def resolve():
    N, K = iim()
    A = [[] for i in range(3)]
    for x in input().split():
        x = int(x)
        if x < 0:
            i = 0
        elif x == 0:
            i = 1
        else:
            i = 2
        A[i].append(x)
    a0 = len(A[0]) * len(A[2])
    s1 = len(A[1])
    a1 = s1 * (2 * N - s1 - 1) // 2
    K1 = K - 1
    if a0 < K1 < a0 + a1:
        print((0))
        return
    if K1 < a0:
        A[0].sort()
        A[2].sort(reverse=True)
        # print(A[0], A[2])
        lo, hi = A[0][0] * A[2][0], A[0][-1] * A[2][-1] + 1
        cache1 = []
        # print((lo, hi), K1)
        while lo < hi:
            mid = (lo + hi) // 2
            k = cnt_val(A[0], A[2], mid, cache1)
            # print((lo, hi), mid, k, K1)
            if k <= K1:
                lo = mid + 1
            else:
                hi = mid
        print(lo)
        return
    A0 = list([-x for x in A[0]])
    A0.sort()
    A[2].sort()
    K3 = K - a0 - a1 - 1
    # print(A[0], A[2], a0, a1, K3)
    lo, hi = 0, 10**18
    cache1, cache2 = [], []
    while lo < hi:
        mid = (lo + hi) // 2
        k3 = cnt_val(A0, A0, mid, cache1) + cnt_val(A[2], A[2], mid, cache2)
        # print((lo, hi), k3, K3)
        if k3 <= K3:
            lo = mid + 1
        else:
            hi = mid
    print(lo)


if __name__ == "__main__":
    resolve()

#!python3
iim = lambda: list(map(int, input().rstrip().split()))
inf = 10**18 + 1


def cnt_val(a, b, x):
    ans = 0
    la, lb = len(a), len(b)
    J = (i for i in range(lb)) if a == b else (-1 for i in range(la))
    j = lb - 1
    for i, k in enumerate(J):
        xa = a[i]
        for j in range(j, k, -1):
            x1 = b[j] * xa
            if x1 <= x:
                break
        else:
            break
        ans += j - k
    return ans


def resolve():
    N, K = iim()
    A = [[] for i in range(3)]
    for x in input().split():
        x = int(x)
        if x < 0:
            i = 0
        elif x == 0:
            i = 1
        else:
            i = 2
        A[i].append(x)
    a0 = len(A[0]) * len(A[2])
    s1 = len(A[1])
    a1 = s1 * (2 * N - s1 - 1) // 2
    K1 = K - 1
    if a0 < K1 < a0 + a1:
        print((0))
        return
    if K1 < a0:
        A[0].sort()
        A[2].sort(reverse=True)
        # print(A[0], A[2])
        lo, hi = A[0][0] * A[2][0], A[0][-1] * A[2][-1] + 1
        # print((lo, hi), K1)
        while lo < hi:
            mid = (lo + hi) // 2
            k = cnt_val(A[0], A[2], mid)
            # print((lo, hi), mid, k, K1)
            if k <= K1:
                lo = mid + 1
            else:
                hi = mid
        print(lo)
        return
    A0 = list([-x for x in A[0]])
    A0.sort()
    A[2].sort()
    K3 = K - a0 - a1 - 1
    # print(A[0], A[2], a0, a1, K3)
    lo, hi = 0, 10**18
    while lo < hi:
        mid = (lo + hi) // 2
        k3 = cnt_val(A0, A0, mid) + cnt_val(A[2], A[2], mid)
        # print((lo, hi), k3, K3)
        if k3 <= K3:
            lo = mid + 1
        else:
            hi = mid
    print(lo)


if __name__ == "__main__":
    resolve()

-def cnt_val(a, b, x, cache): +def cnt_val(a, b, x): -    if len(cache) == 0: -        ca = [x, 0] -        cb = [inf, lb - 1] -        cache.append(ca) -        cache.append(cb) -    else: -        ca, cb = cache -        if x <= ca[0]: -            cache[0], cache[1] = ca, cb = cb, ca -        ca[0] = x -    j = cb[1] -    # for i in range(la): +    j = lb - 1 -        if i == 0: -            ca[1] = j -        cache1 = [] -            k = cnt_val(A[0], A[2], mid, cache1) +            k = cnt_val(A[0], A[2], mid) -    cache1, cache2 = [], [] -        k3 = cnt_val(A0, A0, mid, cache1) + cnt_val(A[2], A[2], mid, cache2) +        k3 = cnt_val(A0, A0, mid) + cnt_val(A[2], A[2], mid)