public class Euler901 {
    static final int MAX_STEPS = 200;
    static final double STOP_DEPTH = 80.0;

    static boolean isIncreasing(double d1) {
        double prev = 0.0;
        double curr = d1;
        double minDiff = Double.POSITIVE_INFINITY;
        for (int i = 0; i < MAX_STEPS; ++i) {
            double diff = curr - prev;
            if (diff <= 0.0) {
                return false;
            }
            if (diff < minDiff) {
                minDiff = diff;
            }
            if (curr > STOP_DEPTH) {
                break;
            }
            double nextVal = Math.exp(curr - prev);
            prev = curr;
            curr = nextVal;
        }
        return true;
    }

    static double expectedCost(double d1) {
        double prev = 0.0;
        double curr = d1;
        double sum = 0.0;
        for (int i = 0; i < MAX_STEPS; ++i) {
            sum += curr * Math.exp(-prev);
            if (curr > STOP_DEPTH) {
                break;
            }
            double nextVal = Math.exp(curr - prev);
            prev = curr;
            curr = nextVal;
        }
        return sum;
    }

    static double findHighThreshold() {
        double scanStart = 0.6;
        double scanEnd = 1.5;
        double scanStep = 0.01;

        boolean prevInc = isIncreasing(scanStart);
        double low = scanStart;
        double high = scanStart;

        for (double d = scanStart + scanStep; d <= scanEnd + 1e-9; d += scanStep) {
            boolean inc = isIncreasing(d);
            if (!prevInc && inc) {
                low = d - scanStep;
                high = d;
                break;
            }
            prevInc = inc;
        }

        if (high == scanStart) {
            return -1.0;
        }

        for (int i = 0; i < 90; ++i) {
            double mid = (low + high) * 0.5;
            if (isIncreasing(mid)) {
                high = mid;
            } else {
                low = mid;
            }
        }
        return high;
    }

    public static String solve() {
        double d1 = findHighThreshold();
        if (d1 <= 0.0) {
            return "Failed";
        }
        double answer = expectedCost(d1);
        return String.format(java.util.Locale.US, "%.9f", answer);
    }

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