N = int(input()) A = [list(map(int,input().split())) for _ in range(N)] Ax = sorted(list(set([A[i][0] for i in range(N)]))) Ay = sorted(list(set([A[i][1] for i in range(N)]))) Dx = {} Dy = {} for i in range(len(Ax)): Dx[Ax[i]] = i+1 for i in range(len(Ay)): Dy[Ay[i]] = i+1 B = sorted([[Dx[A[i][0]],Dy[A[i][1]]] for i in range(N)],key=lambda x:x[0]) Cx = {} Cy = {} for i in range(N): Cx[B[i][0]] = Cx.get(B[i][0],0)+1 Cy[B[i][1]] = Cy.get(B[i][1],0)+1 Cx = list(Cx.values()) cumCx = [0]*(len(Cx)+1) for i in range(1,len(Cx)+1): cumCx[i] = cumCx[i-1]+Cx[i-1] Cy = list(Cy.values()) cumCy = [0]*(len(Cy)+1) for i in range(1,len(Cy)+1): cumCy[i] = cumCy[i-1]+Cy[i-1] R = 0 for i in range(1,len(cumCx)): R += Cx[i-1]*(cumCx[-1]-cumCx[i]) S = 0 for i in range(1,len(cumCy)): S += Cy[i-1]*(cumCy[-1]-cumCy[i]) xmax = 0 ymax = 0 for i in range(N): x,y = B[i] xmax = max(xmax,x) ymax = max(ymax,y) K = 0 while 2**K0: cnt += T[i] i -= i&(-i) return cnt B = sorted(B,key=lambda x:x[1],reverse=True) B = sorted(B,key=lambda x:x[0]) P = 0 for i in range(N-1,-1,-1): x,y = B[i] update(y,1) P += N-i-cumsum(y) B = sorted(B,key=lambda x:x[1]) B = sorted(B,key=lambda x:x[0]) Q = 0 T = [0]*(M+1) for i in range(N): x,y = B[i] update(y,1) Q += i+1-cumsum(y) print((P-Q)/(R*S)**0.5)