import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;

public class Euler783 {

    public static String solveExpectation(int n, int k) {
        MathContext mc = new MathContext(50);
        BigDecimal m1 = new BigDecimal(k);
        BigDecimal m2 = new BigDecimal((long) k * k);
        BigDecimal total = BigDecimal.ZERO;

        BigDecimal decK = new BigDecimal(k);
        BigDecimal dec2 = new BigDecimal(2);
        BigDecimal dec1 = BigDecimal.ONE;
        BigDecimal dec2kMinus1 = new BigDecimal(2L * k - 1);

        for (int t = 1; t <= n; ++t) {
            BigDecimal m = new BigDecimal(n - t + 2);
            BigDecimal a = dec2.divide(m, mc);

            BigDecimal cNumerator = dec2.multiply(dec2kMinus1, mc);
            BigDecimal cDenominator = m.multiply(decK.multiply(m, mc).subtract(dec1, mc), mc);
            BigDecimal c = cNumerator.divide(cDenominator, mc);

            total = total.add(c.multiply(m2, mc), mc).add(a.subtract(c, mc).multiply(m1, mc), mc);

            if (t == n) {
                break;
            }

            BigDecimal r = m.subtract(dec2, mc).divide(m, mc);

            BigDecimal sNumerator = m.subtract(dec2, mc).multiply(
                    decK.multiply(m.subtract(dec2, mc), mc).subtract(dec1, mc), mc);
            BigDecimal sDenominator = cDenominator; // m * (k * m - 1)
            BigDecimal s = sNumerator.divide(sDenominator, mc);

            BigDecimal nextM2Term1 = s.multiply(m2, mc);
            BigDecimal nextM2Term2 = dec2.multiply(decK, mc).multiply(r, mc).add(r, mc).subtract(s, mc).multiply(m1,
                    mc);
            BigDecimal nextM2Term3 = decK.multiply(decK, mc);
            BigDecimal nextM2 = nextM2Term1.add(nextM2Term2, mc).add(nextM2Term3, mc);

            BigDecimal nextM1 = r.multiply(m1, mc).add(decK, mc);

            m1 = nextM1;
            m2 = nextM2;
        }

        // Round using half up to match typical llround behavior
        return total.setScale(0, RoundingMode.HALF_UP).toPlainString();
    }

    public static String solve() {
        return solveExpectation(1000000, 10);
    }

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