定义一个序列的权值为,将相邻的相同的数字合并到一个集合之后,所有集合大小的乘积。以 [1,1,3,3,1,2,2,2,1] 为例,权值就是 2×2×1×3×1=12。\par 如果一个序列是环形的,那么第一个元素和最后一个元素是相邻的,以上一个序列为例,如果他是环形的,那么他的权值就是 (2+1)×2×1×3=18。\par 现在你有 n 种数字,第 i 种有 ci 个,求所有能够生成的环形序列的权值的和。注意我们这里认为两个序列是不同的,是不考虑环形的,只要有一个位置不同就认为是不同的。\par 答案对 109+7 取模。
输入格式
第一行一个整数 n。
接下来一行 n 个整数,表示 ci。
输出格式
一行一个整数表示答案。
样例数据
输入样例一
2
2 2
输出样例一
18
数据规模与约定
本题采用捆绑测试
对于 20 分的数据,∑ci≤8
对于另外 20 分的数据,n≤10,ci≤2
对于另外 20 分的数据,所以 ci 都一样
对于所有的数据,2≤n≤50,1≤ci≤100
时间限制:1s
空间限制:512MB