#P5595. 移除砖块

移除砖块

题面翻译

NN 块砖块排列成一行,从左到右编号为 11NN 。每一个砖块都有一个重量,砖块 ii 的重量为 AiA_i。 Snuke 会对这些 NN 个砖块执行如下操作:

  • 选择一个还没有被移除的砖块,然后移除它。这个操作的代价是与被移除的砖块相邻的砖块(包括它自己)的重量之和。我们定义两块砖 xxy (xy)y ~(x \leq y) 是相邻的,当且仅当对于所有 z(xzy)z (x \leq z \leq y) ,砖块 zz 仍然没有被移除。

N!N! 种移除砖块的可能顺序。你需要对于所有可能的顺序计算出移除完所有 NN 块砖块的代价,并计算这些代价的和。由于答案可能非常大,答案需要对 109+710^9+7 取模。

样例 #1

样例输入 #1

2
1 2

样例输出 #1

9

样例 #2

样例输入 #2

4
1 1 1 1

样例输出 #2

212

样例 #3

样例输入 #3

10
1 2 4 8 16 32 64 128 256 512

样例输出 #3

880971923

提示

制約

  • 1  N  105 1\ \leq\ N\ \leq\ 10^5
  • 1  Ai  109 1\ \leq\ A_i\ \leq\ 10^9