import std.stdio;
import std.algorithm;
import std.array;
import std.conv;
import std.datetime;
import std.numeric;
import std.math;
import std.string;

string my_readln() { return chomp(readln()); }

void main()
{
	auto tokens = my_readln().split();
	auto N = tokens[0].to!ulong;
	uint[4] a;
	foreach (token; my_readln.split)
	{
		++a[token.to!uint];
	}

	double[uint[4]] memo;
	auto dp = new double[][][](305, 305, 305);
	foreach (i; 0..N+1)
	{
		foreach (j; 0..N+1)
		{
			foreach (k; 0..N+1)
			{
				if (i == 0 && j == 0 && k == 0)
				{
					dp[i][j][k] = 0.0;
					continue;
				}

				auto p3 = i / cast(double)N;
				auto p2 = j / cast(double)N;
				auto p1 = k / cast(double)N;
				auto p123 = p1 + p2 + p3;
				auto p = 1.0 / p123;
				if (i != 0)
					p += dp[i-1][j+1][k] * p3 / p123;
				if (j != 0)
					p += dp[i][j-1][k+1] * p2 / p123;
				if (k != 0)
					p += dp[i][j][k-1] * p1 / p123;
				dp[i][j][k] = p;
			}
		}
	}

	writefln("%.10f", dp[a[3]][a[2]][a[1]]);
	stdout.flush();
}