#arc108e. [arc108_e]Random IS

[arc108_e]Random IS

题目描述

NN 把椅子按从左到右排列,每把椅子从左起编号为 aia_i。保证 aia_i 是不同的。

Snuke 决定标记其中一些椅子,并扔掉其他椅子。初始时,没有椅子被标记。如果标记的椅子的编号从左到右是单调递增的,我们称该选择为“好的”。

Snuke 决定按照以下步骤标记椅子:

  1. 如果椅子 xx 是“好的”,也就是当 xx 被标记后选择仍然是好的选择,则将椅子 xx 标记为“好的”。设当前好椅子的数量为 kk
  2. 如果 k=0k=0,则移除未标记的椅子并结束过程。否则,从 kk 个好椅子中等概率选择一个进行标记,然后返回步骤 1。

可以证明,在过程结束时剩余的椅子数量的期望是一个有理数。设这个期望值为 P/QP/Q,其中 PPQQ 互质。另外,设 M=109+7M=10^9+7。我们可以证明,存在一个介于 00M1M-1(包含)之间的整数 RR,满足 PQ×R(modM)P \equiv Q \times R \pmod{M},且 RR 等于 P×Q1(modM)P \times Q^{-1} \pmod{M},其中 Q1Q^{-1}QQ 的模逆元。求 RR 的值。

约束条件

  • 输入中的所有值都是整数。
  • 1N20001 \leq N \leq 2000
  • 1aiN1 \leq a_i \leq N
  • aia_i 是不同的。

输入

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

NN a1a_1 a2a_2 \cdots aNa_N

输出

输出 RR


示例输入 1

3
3 1 2

示例输出 1

666666673
  • 如果首先标记椅子 11(编号为 11 的椅子),则最后剩下两把椅子:椅子 11 和椅子 22
  • 如果首先标记椅子 22,则最后剩下两把椅子:椅子 11 和椅子 22
  • 如果首先标记椅子 33,则最后剩下一把椅子:椅子 33
  • 由于选择椅子的概率相等,最后剩余椅子的数量的期望值为 53\frac{5}{3}。我们有 53×666666673(modM)5 \equiv 3 \times 666666673 \pmod{M},因此 R=666666673R=666666673

示例输入 2

30
26 16 28 30 23 11 29 18 22 15 20 13 27 9 21 7 5 25 4 19 8 3 1 24 10 14 17 12 2 6

示例输出 2

297703424