问题陈述
给定一个长度为N的整数序列:A1,A2,⋯,AN。
从整数1,2,…,Ai (对于每个i(1≤i≤N)),通过独立选择Xi,以均匀分布的方式随机选择整数,来随机选择一个长度为N的整数序列X。
计算这个序列X的最长递增子序列的期望长度,对1000000007取模。
更正式地说,在问题的约束条件下,我们可以证明期望值可以表示为一个分数,即一个不可约分数QP,并且存在一个整数R使得R×Q≡P(mod1000000007)且0≤R<1000000007,所以输出这个整数R。
注解
序列X的子序列是从X中提取一些元素并按照原顺序排列而得到的序列。序列X的最长递增子序列是X的严格递增子序列中长度最大的序列。
约束条件
- 1≤N≤6
- 1≤Ai≤109
- 输入中的所有值都是整数。
输入
输入以以下格式从标准输入给出:
N
A1 A2 ⋯ AN
输出
对1000000007取模后输出期望值。
示例输入1
3
1 2 3
示例输出1
2
令X成为下列情况之一,每种情况的概率都是1/6:
- X=(1,1,1),此时最长递增子序列的长度为1;
- X=(1,1,2),此时最长递增子序列的长度为2;
- X=(1,1,3),此时最长递增子序列的长度为2;
- X=(1,2,1),此时最长递增子序列的长度为2;
- X=(1,2,2),此时最长递增子序列的长度为2;
- X=(1,2,3),此时最长递增子序列的长度为3。
因此,最长递增子序列的长度的期望值为$(1 + 2 + 2 + 2 + 2 + 3) / 6 \equiv 2 \pmod {1000000007}$。
示例输入2
3
2 1 2
示例输出2
500000005
令X成为下列情况之一,每种情况的概率都是1/4:
- X=(1,1,1),此时最长递增子序列的长度为1;
- X=(1,1,2),此时最长递增子序列的长度为2;
- X=(2,1,1),此时最长递增子序列的长度为1;
- X=(2,1,2),此时最长递增子序列的长度为2。
因此,最长递增子序列的长度的期望值为(1+2+1+2)/4=3/2。由于2×500000005≡3(mod1000000007),所以我们应该输出500000005。
示例输入3
6
8 6 5 10 9 14
示例输出3
959563502