编程题
### 问题描述
小齐惯常在农夫约翰的谷仓里惹麻烦。约翰有 $N$ 堆干草。对于每个 $i \in [1, N]$,第 $i$ 堆有 $h_i$ 个干草($1 \leq h_i \leq 10^9$)。小齐不希望有任何一堆草塌倒,因此她只能执行以下操作:
如果两堆相邻的草堆高度相差正好为 $1$,她可以将较高的一堆的顶部干草移动到较低的一堆。
在执行有限次这种操作后,有多少种可能的草垛配置,模 $10^9 + 7$?
### 输入格式
输入的第一行包含整数 $T$,表示独立测试用例的数量,必须全部解决才能正确解决一个输入。
每个测试用例包括 $N$,然后是 $N$ 个草垛的高度。保证所有测试用例的 $N$ 之和不超过 $5000$。
### 输出格式
请输出 $T$ 行,每行一个测试用例的答案。
### 样例输入
```
7
4
2 2 2 3
4
3 3 1 2
4
5 3 4 2
6
3 3 1 1 2 2
6
1 3 3 4 1 2
6
4 1 2 3 5 4
10
1 5 6 6 6 4 2 3 2 5
```
### 样例输出
```
4
4
5
15
9
8
19
```
### 评测数据规模
$1 \leq N \leq 5000$,$1 \leq T \leq 10$。