交替加乘
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

有一个长度  的数组 ,可以对数组  进行任意排列。问:经过排列后,数组  进行"交替加乘”运算得到最大的结果是多少。

“交替加乘”运算规则: 和  相加,相加后结果乘以 ,相乘后结果再加上 ,相加后结果乘以 ,以此类推直到 

数组  长度为  ,计算如:

数组  长度为  ,计算如:

取模前的最大结果,输出对  取模。

输入描述:

第一行包括一个整数  ,表示数组的长度。

第二行包括  个整数,分别表示  。

输出描述:

输出一行,包含一个整数,表示  。
示例1

输入

复制
3
3 2 2

输出

复制
12

说明

取得最大结果的数组  一种排列为 ,最大结果是 ,对  取模,输出