using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "Input1";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("3 2");
//0.48148148148148148148
//中央値が2となるのは、(1回目の出力,2回目の出力,3回目の出力)が
//●(1, 2, 2)
//●(1, 2, 3)
//●(1, 3, 2)
//●(2, 1, 2)
//●(2, 1, 3)
//●(2, 2, 1)
//●(2, 2, 2)
//●(2, 2, 3)
//●(2, 3, 1)
//●(2, 3, 2)
//●(3, 1, 2)
//●(3, 2, 1)
//●(3, 2, 2)
//となる場合で、このいずれかが出る確率は 13/27=0.481481481 です
}
else if (InputPattern == "Input2") {
WillReturn.Add("3 1");
//0.25925925925925925926
}
else if (InputPattern == "Input3") {
WillReturn.Add("765 573");
//0.00147697396984624371
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
decimal[] wkArr = InputList[0].Split(' ').Select(X => decimal.Parse(X)).ToArray();
decimal N = wkArr[0];
decimal K = wkArr[1];
//Kが1個の場合は、3! * K未満の数の場合の数 * Kより大きい数の場合の数
decimal wkCnt1 = 6 * (K - 1) * (N - K);
//Kが2個の場合は、3C1 * (N - 1)
decimal wkCnt2 = 3 * (N - 1);
//Kが3個の場合は、1通り
decimal wkCnt3 = 1;
Console.WriteLine((wkCnt1 + wkCnt2 + wkCnt3) / (N * N * N));
}
}