public class Euler575 {
    public static void main(String[] args) {
        int N = 1000;
        long NN = (long) N * N;
        long corners = 4, edges = 4L * (N - 2), interior = (long) (N - 2) * (N - 2);
        long totalDeg = 2 * corners + 3 * edges + 4 * interior;
        long totalDegPlus1 = totalDeg + NN;

        long sumDegSq = 0, sumDegPlus1Sq = 0;
        for (int k = 1; k <= N; k++) {
            long x = (long) k * k;
            long r = (x - 1) / N + 1, c = (x - 1) % N + 1;
            boolean top = r == 1, bottom = r == N, left = c == 1, right = c == N;
            boolean isCorner = (top || bottom) && (left || right);
            boolean isEdge = top || bottom || left || right;
            long d = isCorner ? 2 : (isEdge ? 3 : 4);
            sumDegSq += d;
            sumDegPlus1Sq += d + 1;
        }

        double pI = (double) sumDegPlus1Sq / totalDegPlus1;
        double pII = (double) sumDegSq / totalDeg;
        double ans = 0.5 * (pI + pII);
        System.out.printf("%.12f%n", ans);
    }
}
