P7873aba | ||
|
Description
对于任意一个序列a={a1,a2,a3,...,an-1,an},定义其aba(l,r)为a[l]~a[r]中不同的子序列个数(包含a[l]与a[r])。特别地,空序列也被称为一个子序列。
出题人很无聊很菜,只会阿巴阿巴,于是定义了一个函数aba(l,r)={al,al+1,al+2,...,ar-1,ar}中不同的子序列的个数。
例如对于序列a={1,2,3,4,5,6,7},aba(2,5)即为求序列{2,3,4,5}中不同的子序列的个数。
出题者太菜了,为了让题目简单点,这里的子序列是普通子序列,不一定要求连续。~~(出题人老好人了)~~长度为n的序列a与长度为m的序列b被称为不同的,当且仅当n!=m,或存在i使得ai!=bi。
若不满足任一上述两个条件则称两个序列是相同的。现在要求对于一个长度为n的序列a,Σ(1<=l<=r<=n)aba(l,r)的值是多少。
由于结果可能很大,请输出它对1000000007取模的结果。
Input Format
第一行一个整数n,表示序列a的长度。
第二行包括n个整数,表示a1,a2,a3,...,an-1,an。
Output Format
一行,一个整数表示Σ(1<=l<=r<=n)aba(l,r)的值对1000000007取模后的结果。
Sample Input 1
3
1 2 3
Sample Output 1
22
样例1解释:
aba(1,1)=2(空序列,{a1})
aba(2,2)=2,aba(3,3)=2,aba(1,2)=4,aba(2,3)=4,aba(1,3)=8
共2+2+2+4+4+8=22
Sample Input 2
8
8 4 1 2 5 6 2 1
Sample Output 2
952
Hint
对于100%的数据,1<=n<=100000,|ai|<=1e9。