#abc150e. [abc150_e]Change a Little Bit

[abc150_e]Change a Little Bit

问题描述

对于长度为 NN 的由 0011 组成的序列 SSTT,我们定义 f(S,T)f(S, T) 如下:

  • 考虑对 SS 执行以下操作,使得 SS 等于 TTf(S,T)f(S, T) 是这些操作的最小总代价。

    • 改变 SiS_i(从 00 变为 11 或者从 11 变为 00)。这个操作的代价为 D×CiD \times C_i,其中 DD 是在该改变之前,SjTjS_j \neq T_j1jN1 \leq j \leq N)的整数 jj 的数量。

计算所有不同的长度为 NN 的由 0011 组成的序列对 (S,T)(S, T)f(S,T)f(S, T) 的总和,对 (109+7)(10^9+7) 取模。

约束条件

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 1Ci1091 \leq C_i \leq 10^9
  • 输入中的所有值都是整数。

输入

输入数据从标准输入读取,格式如下:

NN

C1C_1 C2C_2 \cdots CNC_N

输出

打印 f(S,T)f(S, T) 的总和,对 (109+7)(10^9+7) 取模。

示例输入 1

1
1000000000

示例输出 1

999999993

对于长度为 22 的由 0011 组成的序列,有两对不同的序列 (S,T)(S, T),如下所示:

  • S=(0),T=(1)S = (0), T = (1):通过将 S1S_1 改为 11,我们可以以代价 10000000001000000000 使 S=TS = T,所以 f(S,T)=1000000000f(S, T) = 1000000000
  • S=(1),T=(0)S = (1), T = (0):通过将 S1S_1 改为 00,我们可以以代价 10000000001000000000 使 S=TS = T,所以 f(S,T)=1000000000f(S, T) = 1000000000

这些的总和是 20000000002000000000,对 (109+7)(10^9+7) 取模后的结果为 999999993999999993

示例输入 2

2
5 8

示例输出 2

124

对于长度为 33 的由 0011 组成的序列,有 1212 对不同的序列 (S,T)(S, T),其中包括:

  • S=(0,1),T=(1,0)S = (0, 1), T = (1, 0)

在这种情况下,如果我们先将 S1S_1 改为 11,然后将 S2S_2 改为 00,总代价为 5×2+8=185 \times 2 + 8 = 18。我们不能以更小的代价使 S=TS = T,所以 f(S,T)=18f(S, T) = 18

示例输入 3

5
52 67 72 25 79

示例输出 3

269312