"use strict"
const create = () => {
    const input = require("fs").readFileSync("/dev/stdin", "utf8").trim().split("\n");
    const res = {
        "list": input, "index": 0, "max": input.length,
        "hasNext": function() {return this.index < this.max},
        "next": function() { if (!this.hasNext()) {throw "ArrayIndexOutOfBoundsException";}else{return this.list[this.index++];}}
    };
    return res;
}
const o = create();
const next = () => o.next()
const nextInt = () => parseInt(o.next())
const nextStrArray = () => o.next().split(" ")
const nextIntArray = () => o.next().split(" ").map(el => parseInt(el))
const nextCharArray = () => o.next().split("")
const hasNext = () => o.hasNext()
const myout = (...x) => console.log(...x)
const Main = () => {
    const N = nextInt()
    let x = []
    let y = []
    while(hasNext()){
        let tmp = nextIntArray()
        x.push(tmp[0])
        y.push(tmp[1])
    }
    let pat = []
    const gen = function(sub, used){
        if(sub.length == N){
            pat.push([...sub])
        }
        for(let i = 0;i<N; i++){
            if(used.has(i)) continue
            used.add(i)
            gen([...sub, i], used)
            used.delete(i)
        }
    }
    gen([], new Set())
    let ans = 0
    for(let el of pat){
        let tmp = 0
        for(let i = 1; i<el.length; i++){
            let curr = el[i]
            let prev = el[i-1]
            tmp += Math.sqrt( (x[curr]-x[prev])**2 + (y[curr]-y[prev])**2)
        }
        ans += tmp
    }
    console.log(ans / pat.length)
}
Main()
