{-# LANGUAGE Strict #-}
import           Control.Monad (replicateM)
import           Data.Fixed
import           Data.List     (permutations)

main :: IO ()
main = do
  n <- readLn
  xys <- replicateM n readInt2
  print (realToFrac $ solve n xys :: Pico)

readInt2 :: IO (Int, Int)
readInt2 = (\[x, y] -> (x, y)) .  map read . words <$> getLine

solve :: Int -> [(Int, Int)] -> Double
solve n xys = s / fromIntegral m
  where s = sum [route xys' | xys' <- permutations xys]
        m = product [1 .. n]

route :: [(Int, Int)] -> Double
route xys = sum [distance xy1 xy2 | (xy1, xy2) <- zip xys $ tail xys]

distance :: (Int, Int) -> (Int, Int) -> Double
distance (x1, y1) (x2, y2) =
  sqrt . fromIntegral $ (x1 - x2) ^ (2 :: Int) + (y1 - y2) ^ (2 :: Int)
