#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define sz size() #define pb push_back #define mp make_pair #define fi first #define se second #define all(c) (c).begin(), (c).end() #define rep(i,a,b) for(long long i=(a);i<(b);++i) #define clr(a, b) memset((a), (b) ,sizeof(a)) #define MOD 1000000007 int N; int memo[101][101][101]; double dp[101][101][101]; double f(int a, int b, int c){ if(a==0&&b==0&&c==0)return 0.; if(memo[a][b][c]!=-1)return dp[a][b][c]; double ret = 0.; if(a-1>=0)ret += 1.*a/(a+b+c)*f(a-1,b,c); if(b-1>=0)ret += 1.*b/(a+b+c)*f(a+1,b-1,c); if(c-1>=0)ret += 1.*c/(a+b+c)*f(a,b+1,c-1); ret+=1.*N/(a+b+c); memo[a][b][c] = 1; return dp[a][b][c] = ret; } int main(){ clr(memo,-1); cin>>N; int a=0,b=0,c=0; rep(i,0,N){ int d; cin>>d; if(d==2)a++; if(d==1)b++; if(d==0)c++; } cout << f(a,b,c) << endl; return 0; }