#1615. 禁止套娃

禁止套娃

T3 禁止套娃

题目信息

时间限制: 1s

空间限制: 512M

输入文件: nest.in

输出文件: nest.out

题目背景

YeahPotato 喜欢子序列和套娃。

题目描述

定义从序列 aa 到序列集合 SS 的映射 S=f(a)S=f(a) 为,SSaa 的所有子序列组成的去重集合。即相同的子序列在其中只考虑一次。空序列是任何序列的子序列。子序列在原序列中不一定对应连续的位置。

给定 nn 以及序列 a1na_{1\cdots n},求:

bf(a)f(b)mod(109+7)\sum_{b\in f(a)}\lvert f(b)\rvert\bmod(10^9+7)

输入格式

第一行一个整数 nn

第二行 nn 个整数 a1,,ana_1,\cdots,a_n

输出格式

一行一个整数,表示答案。

样例

样例输入 1

3
1 2 1

样例输出 1

23

样例解释 1

$f([1,2,1])=\{[],[1],[2],[1,1],[1,2],[2,1],[1,2,1]\}$。

这些子序列的本质不同子序列数依次为 1,2,2,3,4,4,71,2,2,3,4,4,7,和为 2323

样例输入 2

10
1 1 4 5 1 4 1 1 4 5

样例输出 2

13566

样例输入 3

见下发文件夹中的 nest/nest3.in。

样例输出 3

见下发文件夹中的 nest/nest3.ans。

数据范围与提示

对于前 10%10\% 的数据,n10n\le 10

对于前 30%30\% 的数据,n20n\le 20

对于前 60%60\% 的数据,n400n\le 400

对于另 20%20\% 的数据,ai2a_i\le 2

对于 100%100\% 的数据,1ain50001\le a_i\le n\le 5000