public class Euler852 {

    static double HValue(double p0, int depthLimit) {
        if (p0 <= 0.0 || p0 >= 1.0)
            return 20.0;

        double ln2 = Math.log(2.0);
        double ln3 = Math.log(3.0);
        double logOdds0 = Math.log(p0 / (1.0 - p0));

        int n = depthLimit;
        double[] nextArr = new double[n + 1];
        double base = logOdds0 - n * ln2;

        for (int h = 0; h <= n; ++h) {
            double z = base + h * ln3;
            double p;
            if (z > 50.0)
                p = 1.0;
            else if (z < -50.0)
                p = 0.0;
            else {
                double o = Math.exp(z);
                p = o / (1.0 + o);
            }
            nextArr[h] = 70.0 * Math.max(p, 1.0 - p) - 50.0;
        }

        for (n = depthLimit - 1; n >= 0; --n) {
            double[] cur = new double[n + 1];
            double baseN = logOdds0 - n * ln2;
            for (int h = 0; h <= n; ++h) {
                double z = baseN + h * ln3;
                double p;
                if (z > 50.0)
                    p = 1.0;
                else if (z < -50.0)
                    p = 0.0;
                else {
                    double o = Math.exp(z);
                    p = o / (1.0 + o);
                }

                double stop = 70.0 * Math.max(p, 1.0 - p) - 50.0;
                double qh = 0.5 + 0.25 * p;
                double cont = -1.0 + qh * nextArr[h + 1] + (1.0 - qh) * nextArr[h];
                cur[h] = Math.max(stop, cont);
            }
            nextArr = cur;
        }

        return nextArr[0];
    }

    static double SValue(int N, int depthLimit) {
        double[][] H = new double[N + 1][N + 1];
        for (int i = 0; i <= N; ++i) {
            for (int j = 0; j <= N; ++j) {
                H[i][j] = 20.0;
            }
        }

        for (int u = 1; u <= N; ++u) {
            for (int f = 1; f <= N; ++f) {
                H[u][f] = HValue((double) u / (double) (u + f), depthLimit);
            }
        }

        double[][] V = new double[N + 1][N + 1];
        for (int u = 1; u <= N; ++u)
            V[u][0] = 20.0 * u;
        for (int f = 1; f <= N; ++f)
            V[0][f] = 20.0 * f;

        for (int u = 1; u <= N; ++u) {
            for (int f = 1; f <= N; ++f) {
                double p = (double) u / (double) (u + f);
                V[u][f] = p * V[u - 1][f] + (1.0 - p) * V[u][f - 1] + H[u][f];
            }
        }

        return V[N][N];
    }

    public static String solve() {
        int depthLimit = 220;
        double ans = SValue(50, depthLimit);
        return String.format(java.util.Locale.US, "%.6f", ans);
    }

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