public class Euler819 {

    static double expectedSteps(int n) {
        double[][] p = new double[n + 1][n + 1];
        p[0][0] = 1.0;

        double N = (double) n;

        for (int k = 0; k < n; ++k) {
            for (int j = 0; j <= k; ++j) {
                double cur = p[k][j];
                if (cur == 0.0) {
                    continue;
                }
                p[k + 1][j] += cur * ((double) j / N);
                p[k + 1][j + 1] += cur * ((double) (n - j) / N);
            }
        }

        double[] e = new double[n + 1];
        e[1] = 0.0;

        for (int k = 2; k <= n; ++k) {
            double num = 1.0;
            for (int j = 1; j < k; ++j) {
                num += p[k][j] * e[j];
            }
            double den = 1.0 - p[k][k];
            e[k] = num / den;
        }

        return e[n];
    }

    public static String solve() {
        double ans = expectedSteps(1000);
        return String.format(java.util.Locale.US, "%.6f", ans);
    }

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