#CF1946E. 女孩排列

    ID: 6570 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>动态规划数论其他数学组合数学*2200

女孩排列

E. 女孩排列

单个测试点时间限制22单个测试点内存限制256256 兆字节

有一个长度为 nn排列被隐藏。

给出它的前缀最大值位置后缀最大值位置

回忆一下:长度为 kk 的排列是一个大小为 kk 的数组,其中 11kk 每个整数恰好出现一次。

前缀最大值是指:在以该元素结尾的前缀中是最大值的元素。 更形式化地说:元素 aia_i 是前缀最大值,当且仅当对所有 j<ij<i 都有 ai>aja_i>a_j

后缀最大值类似定义:元素 aia_i 是后缀最大值,当且仅当对所有 j>ij>i 都有 ai>aja_i>a_j

你需要输出可能满足条件的不同排列的数量

由于答案可能很大,将答案对 109+710^9+7 取模后输出。


输入格式

输入包含多组测试数据。

第一行一个整数 tt1t1041\le t\le 10^4),表示测试用例数量。

每组测试用例: 第一行三个整数 n,m1,m2n,m_1,m_21m1,m2n2×1051\le m_1,m_2\le n\le 2\times10^5),分别表示排列长度、前缀最大值个数、后缀最大值个数。

第二行 m1m_1 个整数 p1<p2<<pm1p_1<p_2<\dots<p_{m_1}1pin1\le p_i\le n),表示递增顺序给出的前缀最大值位置。

第三行 m2m_2 个整数 s1<s2<<sm2s_1<s_2<\dots<s_{m_2}1sin1\le s_i\le n),表示递增顺序给出的后缀最大值位置。

保证所有测试用例的 nn 之和不超过 2×1052\times10^5


输出格式

对于每组测试用例,输出一行一个整数,表示合法排列的数量对 109+710^9+7 取模的结果。


样例输入

6
1 1 1
1
1
4 2 3
1 2
2 3 4
3 3 1
1 2 3
3
5 3 4
1 2 3
2 3 4 5
20 5 4
1 2 3 4 12
12 13 18 20
6 2 3
1 3
3 4 6

样例输出

1
3
1
0
317580808
10