#include #define rep(i, n) for (lli i = 0; i < (n); i++) #define rrep(i, n) for (lli i = (n)-1; i >= 0; i--) using namespace std; using lli = long long int; void YESNO(bool), YesNo(bool); template bool chmin(T1 &l, const T2 &r); template bool chmax(T1 &l, const T2 &r); double dp[105][105][105] = {}; int n; double calc(int zero, int one, int two) { double &ret = dp[zero][one][two]; if (ret > 0) return ret; if (zero == 0 && one == 0 && two == 0) return 0; ret = 1; double p0 = double(zero) / double(n); double p1 = double(one) / double(n); double p2 = double(two) / double(n); double p3 = double(n - zero - one - two) / double(n); if (zero) ret += calc(zero - 1, one + 1, two) * p0; if (one) ret += calc(zero, one - 1, two + 1) * p1; if (two) ret += calc(zero, one, two - 1) * p2; ret /= (1 - p3); return ret; } int main() { cin >> n; vector a(n); vector c(3); rep(i, n) { cin >> a[i]; if (a[i] < 3) { c[a[i]]++; } } cout << calc(c[0], c[1], c[2]) << endl; } // -- lib void YESNO(bool b) { cout << (b ? "YES" : "NO") << endl; } void YesNo(bool b) { cout << (b ? "Yes" : "No") << endl; } template bool chmin(T1 &l, const T2 &r) { return (l > r) ? (l = r, true) : false; } template bool chmax(T1 &l, const T2 &r) { return (l < r) ? (l = r, true) : false; }