#P1996. 【阿里云研发岗】2025-3-9-第一题-子序列权值和

【阿里云研发岗】2025-3-9-第一题-子序列权值和

题目描述

薯条哥定义一个排列的权值为:

如果排列不满足严格上升,则权值为00

否则,严格上升的排列其权值为:排列的长度。

现在薯条哥有个长为nnaa数组,他想知道aa中所有“排列”子序列 (即:此子序列是一个排列)的权值之和,请你帮他算一算吧。

输入描述

每个测试文件内都包含多组测试数据。

第一行一个正整数 T(1T100)T(1\le T\le 100),表示测试数据的组数

接下来对于每组测试数据,输入包含两行。

第一行一个正整数n(1n2×105)n(1\le n\le 2\times 10^5),表示数组aa的长度。

第二行nn个整数ai(1ain)a_i(1\le a_i\le n),表示数组aa

(保证所有测试数据中nn的总和不超过3×1053\times 10^5。)

输出描述

输出TT行,每行一个整数表示当前测试用例的答案,即:所有“排列”子序列的权值之和。

(注意:由于答案可能很大,因此你只要输出答案对109+710^9+7取模的值即可。)

样例

输入

1
3
1 1 2

输出

6

样例解释

所有的“排列”子序列有:

$\left \{ 1 \right \} ,\left \{ 1 \right \} ,\left \{ 1,2 \right \} ,\left \{ 1,2 \right \} $权值求和为66