OI Problems   关于

#qzm6jp. 子序列问题

时间限制:2 s       空间限制:512 MiB       标签: 离散化 数据结构 树状数组 NOI Online 缺题解 

算法难度等级:0       思维难度等级:0       实现难度等级:0


本题来源于:NOI Online #2 提高组

题目描述

给定一个长度为 nn 的正整数序列 A1A_1, A2A_2, \cdots, AnA_n。定义一个函数 f(l,r)f(l,r) 表示:序列中下标在 [l,r][l,r] 范围内的子区间中,不同的整数个数。换句话说,f(l,r)f(l,r) 就是集合 {Al,Al+1,,Ar}\{A_l,A_{l+1},\cdots,A_r\} 的大小,这里的集合是不可重集,即集合中的元素互不相等。

现在,请你求出 l=1nr=ln(f(l,r))2\sum_{l=1}^n\sum_{r=l}^n (f(l,r))^2。由于答案可能很大,请输出答案对 109+710^9 +7 取模的结果。

输入格式

第一行一个正整数 nn,表示序列的长度。

第二行 nn 个正整数,相邻两个正整数用空格隔开,表示序列 A1A_1, A2A_2, \cdots, AnA_n

输出格式

仅一行一个非负整数,表示答案对 109+710^9+7 取模的结果。

样例输入输出

4
2 1 3 2
43
3
1 1 1
6

提示

对于 10%10\% 的数据,满足 1n101 \leq n \leq 10

对于 30%30\% 的数据,满足 1n1001 \leq n \leq 100

对于 50%50\% 的数据,满足 1n1031\leq n \leq 10^3

对于 70%70\% 的数据,满足 1n1051 \leq n \leq 10^5

对于 100%100\% 的数据,满足 1n1061\leq n\leq 10^6,集合中每个数的范围是 [1,109][1,10^9]