#arc104e. [arc104_e]Random LIS

[arc104_e]Random LIS

问题陈述

给定一个长度为NN的整数序列:A1,A2,,ANA_1, A_2, \cdots, A_N

从整数1,2,,Ai1, 2, \ldots, A_i (对于每个i(1iN)i (1 \leq i \leq N)),通过独立选择XiX_i,以均匀分布的方式随机选择整数,来随机选择一个长度为NN的整数序列XX

计算这个序列XX的最长递增子序列的期望长度,对10000000071000000007取模。

更正式地说,在问题的约束条件下,我们可以证明期望值可以表示为一个分数,即一个不可约分数PQ\frac{P}{Q},并且存在一个整数RR使得R×QP(mod1000000007)R \times Q \equiv P \pmod {1000000007}0R<10000000070 \leq R < 1000000007,所以输出这个整数RR

注解

序列XX的子序列是从XX中提取一些元素并按照原顺序排列而得到的序列。序列XX的最长递增子序列是XX的严格递增子序列中长度最大的序列。

约束条件

  • 1N61 \leq N \leq 6
  • 1Ai1091 \leq A_i \leq 10^9
  • 输入中的所有值都是整数。

输入

输入以以下格式从标准输入给出:

NN A1A_1 A2A_2 \cdots ANA_N

输出

10000000071000000007取模后输出期望值。


示例输入1

3
1 2 3

示例输出1

2

XX成为下列情况之一,每种情况的概率都是1/61/6

  • X=(1,1,1)X = (1,1,1),此时最长递增子序列的长度为11
  • X=(1,1,2)X = (1,1,2),此时最长递增子序列的长度为22
  • X=(1,1,3)X = (1,1,3),此时最长递增子序列的长度为22
  • X=(1,2,1)X = (1,2,1),此时最长递增子序列的长度为22
  • X=(1,2,2)X = (1,2,2),此时最长递增子序列的长度为22
  • X=(1,2,3)X = (1,2,3),此时最长递增子序列的长度为33

因此,最长递增子序列的长度的期望值为$(1 + 2 + 2 + 2 + 2 + 3) / 6 \equiv 2 \pmod {1000000007}$。


示例输入2

3
2 1 2

示例输出2

500000005

XX成为下列情况之一,每种情况的概率都是1/41/4

  • X=(1,1,1)X = (1,1,1),此时最长递增子序列的长度为11
  • X=(1,1,2)X = (1,1,2),此时最长递增子序列的长度为22
  • X=(2,1,1)X = (2,1,1),此时最长递增子序列的长度为11
  • X=(2,1,2)X = (2,1,2),此时最长递增子序列的长度为22

因此,最长递增子序列的长度的期望值为(1+2+1+2)/4=3/2(1 + 2 + 1 + 2) / 4 = 3 / 2。由于2×5000000053(mod1000000007)2 \times 500000005 \equiv 3 \pmod {1000000007},所以我们应该输出500000005500000005


示例输入3

6
8 6 5 10 9 14

示例输出3

959563502