# トリプルカードコンプ N = int(input()) A = list(map(int,input().split())) # dp[i][j][k] = 0枚持ってるカードがi種類、1枚のカードがj種類、2枚のカードがk種類ある # 2枚持ってる状態からそのカードを当てると、管理対象から外れる cnt = [0] * 11 for a in A: cnt[a] += 1 dp = [[[0] * (N + 2) for j in range(N + 2)] for i in range(N + 2)] dp[0][0][0] = 0 for i in range(N + 1): for j in range(N + 1): for k in range(N + 1): has = i + j + k if has == 0: continue dp[i][j][k] = N / has # いずれかの対象カードを引くための試行回数の期待値 if k - 1 >= 0: dp[i][j][k] += dp[i][j][k - 1] * (k / has) if j - 1 >= 0: dp[i][j][k] += dp[i][j - 1][k + 1] * (j / has) if i - 1 >= 0: dp[i][j][k] += dp[i - 1][j + 1][k] * (i / has) print(dp[cnt[0]][cnt[1]][cnt[2]])