#2782. 下降

下降

题目描述

有一个长度为 2n2n 的高度序列 hh,其中 1n1 \sim n 每个数都恰好出现了 22 次。

之后进行了若干次操作,每次操作会让满足存在 i<j,hi=hji < j, h_i=h_jiihh 减一。如果 hh00 则不再下降。

当进行了足够多次操作后,我们可以证明,会有恰好 nn 个位置的 hh 不为 00,且他们的值恰好为 1n1 \sim n 各一次。

现在给定你这 nn 个位置 p1,p2,,pnp_1,p_2,\cdots,p_n,你需要求出满足这样的条件的 hh 的个数模 109+710^9+7 的值。

输入格式

第一行,一个整数 nn

第二行,nn 个整数 pip_i

输出格式

一行,一个整数,表示答案。

样例一

input

3
3 4 6

output

5

explanation

$(2,2,3,3,1,1), (2,3,2,3,1,1), (2,3,3,2,1,1), (3,2,2,3,1,1), (3,2,3,2,1,1)$ 满足条件。因此答案为 55

样例二

input

10
5 8 9 13 15 16 17 18 19 20

output

147003663

数据范围与提示

对于所有数据,1n5001\le n\le 5001pi2n1 \leq p_i \leq 2npip_i 严格递增。

子任务编号 nn\le 分值
11 66 2020
22 2020
33 5050 3030
44

时间限制:1s\texttt{1s}

空间限制:512MB\texttt{512MB}