#include <bits/stdc++.h>
using namespace std;
class Sushi {
public:
double totalOperations(vector<int>& dishes, int n) {
// dp[x][y][z] = expected operations
vector<vector<vector<double>>> dp(
n+1, vector<vector<double>>(n+1, vector<double>(n+1, 0.0))
);
// Count dishes with 1,2,3 sushi
vector<int> pieces(4, 0);
for (int x : dishes) pieces[x]++;
int x0 = pieces[1];
int y0 = pieces[2];
int z0 = pieces[3];
// Total sushi initially
int total = x0 + 2*y0 + 3*z0;
// Base case
dp[0][0][0] = 0.0;
// DP over total sushi
for (int s = 1; s <= total; s++) {
for (int z = 0; z <= s / 3; z++) {
for (int y = 0; y <= (s - 3*z) / 2; y++) {
int x = s - 2*y - 3*z;
if (x < 0) continue;
if (x + y + z > n) continue;
int k = x + y + z;
if (k == 0) continue;
dp[x][y][z] =
(double)n / k
+ (x ? (double)x / k * dp[x-1][y][z] : 0.0)
+ (y ? (double)y / k * dp[x+1][y-1][z] : 0.0)
+ (z ? (double)z / k * dp[x][y+1][z-1] : 0.0);
}
}
}
// Return expectation from initial state
return dp[x0][y0][z0];
}
};
int main() {
int n;
cin >> n;
vector<int> dishes(n);
for (int i = 0; i < n; ++i) cin >> dishes[i];
Sushi obj;
cout << fixed << setprecision(10)
<< obj.totalOperations(dishes, n) << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBTdXNoaSB7CnB1YmxpYzoKICBkb3VibGUgdG90YWxPcGVyYXRpb25zKHZlY3RvcjxpbnQ+JiBkaXNoZXMsIGludCBuKSB7CgogICAgLy8gZHBbeF1beV1bel0gPSBleHBlY3RlZCBvcGVyYXRpb25zCiAgICB2ZWN0b3I8dmVjdG9yPHZlY3Rvcjxkb3VibGU+Pj4gZHAoCiAgICAgICAgbisxLCB2ZWN0b3I8dmVjdG9yPGRvdWJsZT4+KG4rMSwgdmVjdG9yPGRvdWJsZT4obisxLCAwLjApKQogICAgKTsKCiAgICAvLyBDb3VudCBkaXNoZXMgd2l0aCAxLDIsMyBzdXNoaQogICAgdmVjdG9yPGludD4gcGllY2VzKDQsIDApOwogICAgZm9yIChpbnQgeCA6IGRpc2hlcykgcGllY2VzW3hdKys7CgogICAgaW50IHgwID0gcGllY2VzWzFdOwogICAgaW50IHkwID0gcGllY2VzWzJdOwogICAgaW50IHowID0gcGllY2VzWzNdOwoKICAgIC8vIFRvdGFsIHN1c2hpIGluaXRpYWxseQogICAgaW50IHRvdGFsID0geDAgKyAyKnkwICsgMyp6MDsKCiAgICAvLyBCYXNlIGNhc2UKICAgIGRwWzBdWzBdWzBdID0gMC4wOwoKICAgIC8vIERQIG92ZXIgdG90YWwgc3VzaGkKICAgIGZvciAoaW50IHMgPSAxOyBzIDw9IHRvdGFsOyBzKyspIHsKICAgICAgZm9yIChpbnQgeiA9IDA7IHogPD0gcyAvIDM7IHorKykgewogICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDw9IChzIC0gMyp6KSAvIDI7IHkrKykgewoKICAgICAgICAgIGludCB4ID0gcyAtIDIqeSAtIDMqejsKICAgICAgICAgIGlmICh4IDwgMCkgY29udGludWU7CiAgICAgICAgICBpZiAoeCArIHkgKyB6ID4gbikgY29udGludWU7CgogICAgICAgICAgaW50IGsgPSB4ICsgeSArIHo7CiAgICAgICAgICBpZiAoayA9PSAwKSBjb250aW51ZTsKCiAgICAgICAgICBkcFt4XVt5XVt6XSA9CiAgICAgICAgICAgICAgKGRvdWJsZSluIC8gawogICAgICAgICAgICArICh4ID8gKGRvdWJsZSl4IC8gayAqIGRwW3gtMV1beV1bel0gOiAwLjApCiAgICAgICAgICAgICsgKHkgPyAoZG91YmxlKXkgLyBrICogZHBbeCsxXVt5LTFdW3pdIDogMC4wKQogICAgICAgICAgICArICh6ID8gKGRvdWJsZSl6IC8gayAqIGRwW3hdW3krMV1bei0xXSA6IDAuMCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gUmV0dXJuIGV4cGVjdGF0aW9uIGZyb20gaW5pdGlhbCBzdGF0ZQogICAgcmV0dXJuIGRwW3gwXVt5MF1bejBdOwogIH0KfTsKCmludCBtYWluKCkgewogIGludCBuOwogIGNpbiA+PiBuOwoKICB2ZWN0b3I8aW50PiBkaXNoZXMobik7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIGNpbiA+PiBkaXNoZXNbaV07CgogIFN1c2hpIG9iajsKICBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbigxMCkKICAgICAgIDw8IG9iai50b3RhbE9wZXJhdGlvbnMoZGlzaGVzLCBuKSA8PCBlbmRsOwogIHJldHVybiAwOwp9Cg==