import copy from functools import lru_cache import sys sys.setrecursionlimit(1000000) N = int(input()) A = list(map(int,input().split())) B = [min(A[i],3) for i in range(N)] B = tuple(B) #print(B) #0,1,2,3以上個の数 C = [0,0,0,0] for x in A: if x >=3 : C[3] += 1 else: C[x] += 1 C = tuple(C) #print(C) @lru_cache(maxsize=None) def solve(X): ret = N loop = N - X[3] #print(X) for i in range(3): if X[i] == 0: continue if i <= 2: Z = list(X) Z[i] -= 1 Z[i+1] += 1 Z = tuple(Z) ret += solve(Z)*X[i] #print("A",X,loop,ret) if loop == 0: ret = 0 else: ret /= loop #print(X,loop,ret) return ret ans = solve(C) print(ans)