20220247 - 简单数学证明

Time Limit

1000 毫秒

Memory Limit

128 MB

通过次数

3

提交次数

12

给出n个数字,将这些数字划分为m个集合:

1、每个数只在一个集合中(只能用一次)

2、每个集合不为空(至少有一个数)

求划分集合的代价之和的最小值。

对于每个集合代价为该集合的各个元素之积的m次方。

例如:

将1、2划分为1个集合,则代价为:(1*2)^1

将1、2划分为2个集合,则代价为:1^2+2^2

Input

第一行,一个整数n

接下来n行,每行一个整数a_i

对于100%的数据:

1 \le n,a_i \le 10^6

Output

一个整数,表示代价之和的最小值对1e9+7求余的结果。

Examples

Input

2
1
2

Output

2