#CF1763D. 合法双调排列

合法双调排列

合法双调排列

  • 时间限制:1 秒
  • 内存限制:256 MiB

题目描述

给定五个整数 nn、ii、jj、xx 和 yy。请你计算满足 Bi=xB_i = x 且 Bj=yB_j = y 的 11 到 nn 的“bitonic”排列 BB 的个数。由于答案可能很大,请输出对 109+710^9+7 取模后的结果。

“bitonic”排列是指这样一种排列:排列中的元素从开头开始严格递增,一直持续到某个下标 kk(2≤k≤n−12\le k\le n - 1),然后在该下标之后开始严格递减,直到排列末尾。具体定义见下方说明。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt(1≤t≤1001 \le t \le 100),表示测试用例的数量。

每组测试用例占一行,包含五个整数 nn、ii、jj、xx、yy(3≤n≤1003 \le n \le 100 且 1≤i,j,x,y≤n1 \le i,j,x,y \le n)。保证 i<ji < j 且 x≠yx \ne y。

输出格式

对于每组测试用例,输出一行,表示满足条件的 bitonic 排列的个数,对 109+710^9+7 取模。

样例输入 1

7
3 1 3 2 3
3 2 3 3 2
4 3 4 3 1
5 2 5 2 4
5 3 4 5 4
9 3 7 8 6
20 6 15 8 17

样例输出 1

0
1
1
1
3
0
4788

提示

排列是指长度为 nn 的数组,包含 11 到 nn 的所有不同整数。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是(22 出现了两次),[1,3,4][1,3,4] 也不是(n=3n=3 但有 44)。

当 n≥3n \ge 3 时,若一个数组的元素先在某个下标 kk 处(2≤k≤n−12 \le k \le n-1)单调递增,然后单调递减,则称其为 bitonic 数组。例如,[2,5,8,6,1][2,5,8,6,1] 是一个 bitonic 数组,k=3k=3,但 [2,5,8,1,6][2,5,8,1,6] 不是(先递增到 k=3k=3,然后递减,再递增)。

bitonic 排列是指满足上述 bitonic 性质的排列。例如,[2,3,5,4,1][2,3,5,4,1] 是一个 bitonic 排列,但 [2,3,5,1,4][2,3,5,1,4] 不是(不满足 bitonic 性质),[2,3,4,4,1][2,3,4,4,1] 也不是(不是排列)。

样例说明

对于 n=3n=3,所有可能的排列为 [1,2,3][1,2,3]、[1,3,2][1,3,2]、[2,1,3][2,1,3]、[2,3,1][2,3,1]、[3,1,2][3,1,2] 和 [3,2,1][3,2,1]。其中,bitonic 排列为 [1,3,2][1,3,2] 和 [2,3,1][2,3,1]。

在第一个测试用例中,期望的排列形式为 [2,?,3][2,?,3],这不满足 n=3n=3 的两个 bitonic 排列,因此答案为 00。

在第二个测试用例中,期望的排列形式为 [?,3,2][?,3,2],只满足 bitonic 排列 [1,3,2][1,3,2],因此答案为 11。

数据范围

子任务编号 分值 特殊限制
1 20 n≤9n\le 9
2 40 n≤20n\le 20
3 无特殊限制