#include using namespace std; using ll = long long; #define all(p) p.begin(),p.end() #define rep(i,a,b) for(int i=(int)a;i<(int)b;i++) const int mod=998244353; using ld = long double; int main(){ int N; cin>>N; ld ans=1e9; ll H; cin>>H; vector X(N),Y(N); vector p(N,vector(2,vector(3))); rep(i,0,N){ cin>>X[i]>>Y[i]; rep(j,0,2){ p[i][j][0]=X[i]*X[i]; p[i][j][1]=X[i]*Y[i]; p[i][j][2]=Y[i]*Y[i]; Y[i]=Y[i]-H; } Y[i]+=2*H; } vector order(N); rep(i,0,N) order[i]=i; sort(all(order),[&](int l,int r){ return X[l]>X[r]; }); rep(i,0,N+2){ ll A,B,C; if(i pos(N); vector> q(2,vector(3)); auto f=[&](int ind,int ud,int s)->void{ rep(j,0,3) q[ud][j]+=s*p[ind][ud][j]; }; auto g=[&]()->ld{ ld tmp=0; rep(j,0,2){ tmp+=q[j][2]; if(q[j][0]) tmp-=(ld)(q[j][1]*q[j][1])/(ld)(q[j][0]); } return tmp; }; rep(j,0,N){ if(A*X[j]+B*Y[j]+C>=0) pos[j]=1; else pos[j]=0; f(j,pos[j],1); } rep(j,0,N+1){ ans=min(ans,g()); if(j==N) break; int a=order[j]; f(a,pos[a],-1); pos[a]=1-pos[a]; f(a,pos[a],1); } } cout<