#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; vector > > memo; double solve(int n, int a, int b, int c) { if(a == 0 && b == 0 && c == 0) return 0.0; if(a < 0 || b < 0 || c < 0) return 0.0; if(memo[a][b][c] > -0.5) return memo[a][b][c]; double ret = solve(n, a-1, b, c) * a / n + solve(n, a+1, b-1, c) * b / n + solve(n, a, b+1, c-1) * c / n + 1; ret *= n / (double)(a + b + c); return memo[a][b][c] = ret; } int main() { int n; cin >> n; vector init(11); for(int i=0; i> a; ++ init[a]; } memo.assign(n+1, vector >(n+1, vector(n+1, -1.0))); double ret = solve(n, init[2], init[1], init[0]); printf("%.10f\n", ret); return 0; }