A - Guess the number

Languages: C, C++, Java, Python, Kotlin, C#
Time & Memory limits: (details)

Randy is playing a simple game called "Guess the Number": there is a hidden integer $V$ whose value is between $1$ and $N$. The goal of the game is to guess this number $V$. In each round, Randy picks an integer between $1$ and $N$ as his guess.  If the guess matches $V$, the game ends and he wins a prize.  Otherwise, the game continues and asks Randy for his next guess, and so on.

In each round, Randy will use the following strategy to make his guess:

  1. He randomly selects an integer $x$ between $1$ and $N$.
  2. If $x$ was not tried in any previous round, $x$ would be his guess in the current round. This guess costs him \$1.
  3. Otherwise, as the guess in the current round, he would pick the smallest not tried integer that is larger than $x$ (but not larger than $N$). This guess also costs him \$1.
  4. If no such number exists, he discards $x$ and goes to step $1$. Discarding number $x$ has no cost for Randy.


Question: what is the average amount of money Randy has to pay before he wins the prize?


Input

The input consists of a single line containing two integers $N$ $(1 \le N \le 20)$ and $V$ $(1 \le V \le N)$.

Output

Output a single line with the answer to the question described above. Your answer is considered correct if its (absolute or relative) difference from the expected answer is at most $10^{-6}$.

Sample test(s)

Input
2 2
Output
1.5
Input
3 2
Output
1.944444444
Input
10 6
Output
5.305939329