public class Euler897 {

    static double p4(double x) {
        double x2 = x * x;
        return x2 * x2;
    }

    static double[] optimalKnots(int n) {
        int m = n - 1;
        double[] x = new double[m + 1];
        for (int i = 0; i <= m; ++i) {
            x[i] = -1.0 + 2.0 * i / m;
        }

        double omega = 0.5;
        double tol = 1e-15;
        int maxIter = 300000;

        for (int it = 0; it < maxIter; ++it) {
            double maxDelta = 0.0;
            for (int i = 1; i < m; ++i) {
                double a = x[i - 1];
                double b = x[i + 1];
                double val = (p4(b) - p4(a)) / (4.0 * (b - a));
                double target = Math.cbrt(val);
                double nx = x[i] + omega * (target - x[i]);
                double d = Math.abs(nx - x[i]);
                if (d > maxDelta) {
                    maxDelta = d;
                }
                x[i] = nx;
            }
            if (maxDelta < tol) {
                break;
            }
        }

        return x;
    }

    static double polygonArea(double[] x) {
        int m = x.length - 1;
        double area = 0.0;
        for (int i = 0; i < m; ++i) {
            double dx = x[i + 1] - x[i];
            area += (2.0 - (p4(x[i]) + p4(x[i + 1]))) * dx * 0.5;
        }
        return area;
    }

    static double G(int n) {
        return polygonArea(optimalKnots(n));
    }

    public static String solve() {
        return String.format(java.util.Locale.US, "%.9f", G(101));
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
