import qualified Data.Text as T
import qualified Data.Text.IO as T
import qualified Data.Text.Read as T
import qualified Data.Array as A
import Data.List (permutations)

main :: IO ()
main = do
  (n : _) <- map unsafeSignedDecimal . T.words <$> T.getLine :: IO [Int]
  xys <- (A.listArray (1, n) <$>) . sequence . replicate n $ unsafeListToTuple . map (fromIntegral . unsafeSignedDecimal) . T.words <$> T.getLine :: IO (A.Array Int (Double, Double))
  let
    ds = A.array ((1, 1), (n, n)) . map (\(i, j) -> ((i, j), dist (xys A.! i) (xys A.! j))) $ (,) <$> [1..n] <*> [1..n] :: A.Array (Int, Int) Double
    numerator = sum . map (sum . map (ds A.!) . (zip <$> id <*> tail)) . permutations $ [1..n] :: Double
    denominator = fromIntegral . product $ [2..n] :: Double
  print $ numerator / denominator

dist :: (Double, Double) -> (Double, Double) -> Double
dist (x0, y0) (x1, y1) = sqrt $ (x1 - x0) ^ 2 + (y1 - y0) ^ 2

unsafeListToTuple :: [a] -> (a, a)
unsafeListToTuple (x : y : _) = (x, y)

unsafeSignedDecimal :: T.Text -> Int
unsafeSignedDecimal s = case T.signed T.decimal s of
  Right (n, _) -> n
