#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;
}