#include using namespace std; using ld = long double; int N; int A[101]; ld dp[101][101][101]; ld f(int c1, int c2, int c3) { if (c1 == c2 && c2 == c3 && c1 == 0) return 0.0; if (dp[c1][c2][c3] >= 0) return dp[c1][c2][c3]; int c0 = N - c1 - c2 - c3; ld l = 1, r = 0; if (c1) r += (f(c1 - 1, c2, c3) + 1) / N * c1; if (c2) r += (f(c1 + 1, c2 - 1, c3) + 1) / N * c2; if (c3) r += (f(c1, c2 + 1, c3 - 1) + 1) / N * c3; if (c0) { r += ld(c0) / N; l -= ld(c0) / N; } return r / l; } int main() { cin >> N; for (int i = 0; i < N; i++) cin >> A[i]; for (int i = 0; i <= N; i++) for (int j = 0; j <= N; j++) for (int k = 0; k <= N; k++) dp[i][j][k] = -1; int c1 = 0, c2 = 0, c3 = 0; for (int i = 0; i < N; i++) { c1 += A[i] == 2; c2 += A[i] == 1; c3 += A[i] == 0; } cout << fixed << setprecision(16) << f(c1, c2, c3) << "\n"; }