fun main(arr:Array<String>) {
    val posList = readLine()!!.toInt()
    val totalList = Proc((1..posList).map { readLine()!!.split(" ").map { it.toInt() }.let { Pos(it[0], it[1]) } } ).getAns(null, 0, 0.toDouble())
    val ans = totalList.sum() / totalList.size
    println(ans)
}

class Pos(val x:Int, val y:Int)
class Proc(val pointList:List<Pos>) {
    fun getAns(prev:Pos?, flag:Int, subTotal:Double):List<Double> {
        if(flag == (1 shl pointList.size) - 1) {
            return listOf(subTotal)
        }
        val ret = mutableListOf<Double>()
        if(prev == null) {
            for(i in pointList.indices) {
                ret.addAll(getAns(pointList[i], 1 shl i, 0.toDouble()))
            }
        } else {
            for(i in pointList.indices) {
                val key = 1 shl i
                if((flag and key) != 0) {
                    continue
                }
                val dist = Math.sqrt(Math.pow((prev.x - pointList[i].x).toDouble(), 2.toDouble()) + Math.pow((prev.y - pointList[i].y).toDouble(), 2.toDouble()))
                ret.addAll(getAns(pointList[i], flag + key, subTotal + dist))
            }
        }
        return ret
    }
}