#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;

int n,S,max_r2;
struct Node{
	int x,y,v;
}node[N];

bool check(int mid){
	
	int sum=0;
	
	for(int i=1;i<=n;i++){
		int r2=node[i].x*node[i].x+node[i].y*node[i].y;
		if(r2<=mid){
			sum+=node[i].v;
		}
		if(sum>=S){
			return true;
		}
	}
	return false;
	
}

void solve(){
	
	int res=-1;
	int l=0,r=max_r2,mid;
	
	while(l<=r){
		mid=l+r>>1;
		if(check(mid)){
			res=mid;
			r=mid-1;
		}else{
			l=mid+1;
		}
	}
	if(res==-1){
		cout<<-1<<endl;
		return;
	}
	double ans=sqrt(1.0*res);
	cout<<fixed<<setprecision(7)<<ans<<endl;
	return;
}


signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	
	cin>>n>>S;
	for(int i=1;i<=n;i++){
		cin>>node[i].x>>node[i].y>>node[i].v;
		int r2=node[i].x*node[i].x+node[i].y*node[i].y;
		max_r2=max(max_r2,r2);
	}
	
	solve();
    return 0;
}