#include <bits/stdc++.h>
using namespace std;

long long n, k;
long long a[200004];

long long f(long long mid){
	long long ret = 0;
	for(int i = 0; i < n; i++){
		if(a[i] == 0){
			if(mid >= 0)	ret += n-1;
			continue;
		}
		if(a[i] < 0){
			long long target = mid/a[i];
			if(target*a[i] > mid)	target++;
			int idx = lower_bound(a, a+n, target)-a;
			ret += n - idx;
			if(idx <= i)	ret -= 1;
		}
		else{
			long long target = mid/a[i];
			if(target*a[i] > mid)	target--;
			int idx = upper_bound(a, a+n, target)-a-1;
			if(idx < 0)	continue;
			ret += idx + 1;
			if(idx >= i)	ret -= 1;
		}
	}
	return ret/2;
}

int main() {
	cin>>n>>k;
	for(int i = 0; i < n; i++)	cin>>a[i];
	sort(a, a+n);
	long long lo = -1e18, hi = 1e18;
	while(lo < hi){
		long long mid = lo + (hi - lo)/2;
		if(f(mid) >= k)	hi = mid;
		else	lo = mid + 1;
	}
	cout<<lo<<endl;
	// your code goes here
	return 0;
}