local read = setmetatable({}, {__index = function(t, k) local a = {} for i=1,#k do table.insert(a, '*'..string.sub(k, i, i)) end local r = io.read local u = table.unpack or unpack return function() return r(u(a)) end end})
read.N = function(N) local t={} for i=1,N do t[i]=read.n() end return t end
string.totable = function(s) local t={} local u=string.sub for i=1,#s do t[i] = u(s, i, i) end return t end
string.split = function(s) local t={} for w in string.gmatch(s, "[^%s]+") do table.insert(t, w) end return (table.unpack or unpack)(t) end
----

local function factorial(n)
    local a = 1
    for i=1, n do
        a = a * i
    end
    return a
end

local function perm(seq)
    local up = table.unpack or unpack
    local t = {up(seq)}
    return coroutine.wrap(function()
        local function rec(i)
            if i > #t then
                --coroutine.yield({up(t)})
                coroutine.yield(t)
                return
            end
            rec(i+1)
            for j=i+1,#t do
                t[i], t[j] = t[j], t[i]
                rec(i+1)
                t[i], t[j] = t[j], t[i]
            end
        end
        rec(1)
    end)
end

-- C
local N = read.n()
local X, Y = {}, {}
for i=1,N do
    X[i], Y[i] = read.nn()
end

local route_num = factorial(N)

local sum = 0
local set = {}
for i=1,N do set[i] = i end
for route in perm(set) do
    for n=1,N-1 do
        local i, j = route[n], route[n+1]
        local d = math.sqrt((X[i]-X[j])^2 + (Y[i]-Y[j])^2)
        sum = sum + d
    end
end

print(sum / route_num)
