import scala.io.StdIn._
object Main extends App {

  val n: Int = readInt()
  val pointSeq: Seq[(Int, Int)] = Seq.fill(n)(readLine().split(" ").map(_.toInt))
    .map(arr => (arr(0), arr(1)))


  val combinationOf2Points: Seq[(Int, Int)] = (0 until n).combinations(2)
    .map(points => (points(0), points(1))).toSeq

  val pointsAndDistanceMap: Map[(Int, Int), Double] = combinationOf2Points.map { case (p1, p2) =>
    val distance = calcDistance(pointSeq(p1), pointSeq(p2))
    ((p1, p2), distance)
  }.toMap

  def solve() = {
    val permutations: Seq[Seq[Int]] = (0 until n).permutations.toSeq
    val allRoutesDistance = permutations.foldLeft(0D) { case (acc, route) =>
      acc + calcDistanceOfRoute(route)
    }
    allRoutesDistance / permutations.length
  }

  def calcDistance(point1: (Int, Int), point2: (Int, Int)): Double = {
    val (x1, y1) = point1
    val (x2, y2) = point2
    val dx = x1 - x2
    val dy = y1 - y2
    Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2))
  }

  def calcDistanceOfRoute(route: Seq[Int]): Double = {
    val lastPoint = route.length - 1
    (0 until lastPoint).foldLeft(0D) { case (acc, point1Idx) =>
      val point2Idx = if(point1Idx == lastPoint) 0 else point1Idx + 1
      val p1 = route(point1Idx)
      val p2 = route(point2Idx)
      acc + pointsAndDistanceMap.getOrElse((p1, p2), pointsAndDistanceMap(p2, p1))
    }
  }


  println(solve())

}
