编程题
### 问题描述
在一个遥远的星球上,小然发现了一种神秘的石板,上面刻有一串神秘的数字。他注意到,每块石板上的数字都满足一定的规则。在一块石板上,数字的序列是 $$A_1, A_2, \ldots, A_N$$。他还发现了一种神秘的子序列,这个子序列是 $$S_1, S_2, \ldots, S_M$$,它是原序列的一部分,也就是说,子序列可以通过删除原序列中的一些(也可能是零个)元素得到。
小然发现,如果他按非递减顺序对这个子序列进行排序,然后计算出子序列中满足 $$S_i = i$$(其中 $$1 \leq i \leq |S|$$)的元素的数量,这个数量就是这个子序列的 "神秘度"。他对这些神秘数字非常好奇,于是决定计算这块石板的所有非空子序列的 "神秘度" 之和。
然而,小然面临一个问题,那就是这个数字可能非常的大,以至于他无法计算出来。他决定将这个数字对 $$10^9+7$$ 取模,以便于计算。你能帮助小然解决这个问题吗?
### 输入格式
输入的第一行包含一个整数 $$T$$,表示测试用例的数量。接下来是 $$T$$ 行,每行包含一个测试用例。
每个测试用例的第一行包含一个整数 $$N$$,表示石板上的数字数量。第二行包含 $$N$$ 个用空格隔开的整数 $$A_1, A_2, \ldots, A_N$$,表示石板上的数字序列。
### 输出格式
对于每个测试用例,输出一个整数,表示所有非空子序列的 "神秘度" 之和对 $$10^9+7$$ 取模的结果。
### 样例输入
```text
4
2
1 2
5
3 2 5 5 3
4
1 1 2 1
6
6 4 5 2 3 1
```
### 样例输出
```text
3
5
17
63
```
### 说明
在第一个测试用例中,给定的序列是 $$[1, 2]$$。有 $3$ 个可能的非空子序列:
- $$[1]$$,其 "神秘度" 为 $1$,因为 $$S_1 = 1$$。
- $$[2]$$,其 "神秘度" 为 $0$。
- $$[1, 2]$$,其 "神秘度" 为 $2$,因为 $$S_1 = 1$$ 和 $$S_2 = 2$$。
因此,总的 "神秘度" 之和为 $$1 + 0 + 2 = 3$$。
### 评测数据范围
$$1 \leq T \leq 10^5$$。
$$1 \leq N \leq 10^5$$。
$$1 \leq A_i \leq N$$ (其中 $$1 \leq i \leq N$$)。
所有测试用例的 $$N$$ 之和不超过 $$2 \times 10^5$$。