#include #include using namespace std; int N,X[2<<17],Y[2<<17]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>N; map>mpX,mpY; for(int i=0;i>X[i]>>Y[i]; mpX[X[i]].push_back(Y[i]); mpY[Y[i]].push_back(X[i]); } vectorord(N); vector B(Y,Y+N); sort(B.begin(),B.end()); B.erase(unique(B.begin(),B.end()),B.end()); atcoder::fenwick_treeBIT(B.size()); long P=0,Q=0; for(auto[key,val]:mpX) { for(int y:val) { y=lower_bound(B.begin(),B.end(),y)-B.begin(); P+=BIT.sum(0,y); Q+=BIT.sum(y+1,B.size()); } for(int y:val) { y=lower_bound(B.begin(),B.end(),y)-B.begin(); BIT.add(y,1); } } long R=long(N)*(N-1)/2; long S=R; for(auto[key,val]:mpX) { long x=val.size(); R-=x*(x-1)/2; } for(auto[key,val]:mpY) { long x=val.size(); S-=x*(x-1)/2; } double ans=P-Q; ans/=sqrtl(double(R)*S); cout<