module main; // https://yukicoder.me/problems/no/242/editorial より // 期待値、組み合わせ import std; // 階乗とその逆元 double[] fact, factInv; void init() { fact = new double[](100), factInv = new double[](100); fact[0] = fact[1] = 1.0; factInv[0] = factInv[1] = 1.0; foreach (i; 2 .. 100) { fact[i] = i * fact[i - 1]; factInv[i] = factInv[i - 1] / i; } } // 二項係数 double nCr(int n, int r) { if (n < r || r < 0) return 0.0; return fact[n] * factInv[r] * factInv[n - r]; } void main() { // 入力 int N = readln.chomp.to!int; // 答えの計算 init(); auto ans = nCr(N, 5) / nCr(99, 5) * 12; // 答えの出力 writefln("%.12f", ans); }