#include <stdio.h>
#include <math.h>

double kyoricalc(int a,int b) {
    return sqrt(a * a + b * b);
}

int kaizyou(int c) {
    int d,e = 1;
    for (d = 2;d <= c;d++) {
        e *= d;
    }
    return e;
}

int main(void) {
    int N,x[8],y[8],i,j[8];
    double kyorisum = 0,kb = 1;
    scanf("%d",&N);
    for (i = 0;i < N;i++) {
        scanf("%d %d",&x[i],&y[i]);
    }
    for (i = 2;i <= N;i++) {
        kb *= i;
    }
    for (j[0] = 0;j[0] < N;j[0]++) {
        for (j[1] = 0;j[1] < N;j[1]++) {
            if (j[1] == j[0]) continue;
            kyorisum += kyoricalc(x[j[1]] - x[j[0]],y[j[1]] - y[j[0]]) * kaizyou(N - 2) / kb;
            if (N > 2) {
                for (j[2] = 0;j[2] < N;j[2]++) {
                    if (j[2] == j[0] || j[2] == j[1]) continue;
                    kyorisum += kyoricalc(x[j[2]] - x[j[1]],y[j[2]] - y[j[1]]) * kaizyou(N - 3) / kb;
                    if (N > 3) {
                        for (j[3] = 0;j[3] < N;j[3]++) {
                            if (j[3] == j[0] || j[3] == j[1] || j[3] == j[2]) continue;
                            kyorisum += kyoricalc(x[j[3]] - x[j[2]],y[j[3]] - y[j[2]]) * kaizyou(N - 4) / kb;
                            if (N > 4) {
                                for (j[4] = 0;j[4] < N;j[4]++) {
                                    if (j[4] == j[0] || j[4] == j[1] || j[4] == j[2] || j[4] == j[3]) continue;
                                    kyorisum += kyoricalc(x[j[4]] - x[j[3]],y[j[4]] - y[j[3]]) * kaizyou(N - 5) / kb;
                                    if (N > 5) {
                                        for (j[5] = 0;j[5] < N;j[5]++) {
                                            if (j[5] == j[0] || j[5] == j[1] || j[5] == j[2] || j[5] == j[3] || j[5] == j[4]) continue;
                                            kyorisum += kyoricalc(x[j[5]] - x[j[4]],y[j[5]] - y[j[4]]) * kaizyou(N - 6) / kb;
                                            if (N > 6) {
                                                for (j[6] = 0;j[6] < N;j[6]++) {
                                                    if (j[6] == j[0] || j[6] == j[1] || j[6] == j[2] || j[6] == j[3] || j[6] == j[4] || j[6] == j[5]) continue;
                                                    kyorisum += kyoricalc(x[j[6]] - x[j[5]],y[j[6]] - y[j[5]]) * kaizyou(N - 7) / kb;
                                                    if (N > 7) {
                                                        for (j[7] = 0;j[7] < N;j[7]++) {
                                                            if (j[7] == j[0] || j[7] == j[1] || j[7] == j[2] || j[7] == j[3] || j[7] == j[4] || j[7] == j[5] || j[7] == j[6]) continue;
                                                            kyorisum += kyoricalc(x[j[7]] - x[j[6]],y[j[7]] - y[j[6]]) * kaizyou(N - 8) / kb;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    printf("%.12f\n",kyorisum);
    return 0;
}


Measured memory_bytes: 128