Gleb 拥有 $n$ 种不同颜色的袜子。具体来说,他有 $a_i$ 双颜色为 $i$ 的袜子。他一双接一双地穿这些袜子,直到没有干净的袜子为止,这时就到了“大清洗”的时间。
Gleb 把所有的袜子都放进洗衣机进行洗涤和烘干,等待两三个小时。现在,最糟糕的部分开始了。Gleb 需要再次将袜子配对。为了简化过程,我们假设所有相同颜色的袜子都是不可区分的。换句话说,任何两只相同颜色的袜子都可以组成一对。显然,Gleb 从不会将两只不同颜色的袜子配成一对。
Gleb 执行以下过程。我们将洗衣机内所有袜子的集合记为 $A$,将所有尚未匹配且放在 Gleb 旁边的袜子的集合记为 $B$。
- Gleb 把手伸进洗衣机,检查 $A$ 中是否还有袜子。如果没有,过程结束。否则,他随机取出一只袜子($A$ 中的所有袜子被取出的概率相等),我们将这只袜子记为 $x$。这是一个单一动作,耗时正好一秒。
- 然后,他尝试在已经从洗衣机中取出且放在他身边、尚未配对的所有袜子中为这只袜子寻找配对,即集合 $B$ 中的所有袜子。
- Gleb 以随机顺序考虑 $B$ 中的所有袜子。所有顺序出现的概率相等。考虑 $B$ 中的一只袜子需要一秒钟。如果袜子 $x$ 与刚刚从 $B$ 中取出的袜子颜色相同,它们就组成一对,此步骤结束。
- 如果 $B$ 中的所有袜子都已被考虑且没有找到与 $x$ 的匹配,Gleb 就把 $x$ 放入未配对袜子的堆中。换句话说,袜子 $x$ 进入集合 $B$。
- Gleb 回到第一步。
在等待洗涤和烘干周期结束时,Gleb 想知道,上述过程预计需要多长时间?他上次参加编程比赛已经是几年前的事了,所以他需要你的帮助来找出答案。
输入格式
第一行包含一个整数 $n$ ($1 \le n \le 200\,000$),表示 Gleb 拥有的袜子颜色种类数。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le 5$),其中第 $i$ 个数表示 Gleb 衣柜中颜色为 $i$ 的袜子的双数。
输出格式
输出一个实数,表示 Gleb 按照给定步骤完成整个过程所需的期望秒数。如果你的答案与标准答案的绝对误差或相对误差不超过 $10^{-6}$,则该答案将被接受。
样例
样例输入 1
1 1
样例输出 1
3.000000000
样例输入 2
1 3
样例输出 2
9.000000000
样例输入 3
2 1 1
样例输出 3
7.000000000
样例输入 4
3 3 2 2
样例输出 4
29.571428571