题目描述
有一个长度为 nnn 的序列,xht37 现在想分块维护它。
PinkRabbit 要求他只准将序列分成 PRPRPR 种长度的块。
NaCly_Fish 要求他只准将序列分成 NFNFNF 种长度的块。
同一个人可能会要求 xht37 多次相同的块长。
xht37 想同时满足 PinkRabbit 和 NaCly_Fish 要求,只好使用两个人都允许的长度分块。
xht37 想知道,有多少种不同的分块方案,答案对 109+710 ^ 9 + 7109+7 取模。
输入格式
第一行一个正整数 nnn,表示序列的长度。
第二行一个正整数 PRPRPR,表示 PinkRabbit 要求的分块长度的种类数。
第三行 PRPRPR 个正整数,表示 PinkRabbit 要求的 PRPRPR 种分块长度。
第四行一个正整数 NFNFNF,表示 NaCly_Fish 要求的分块长度的种类数。
第五行 NFNFNF 个正整数,表示 NaCly_Fish 要求的 NFNFNF 种分块长度。
输出格式
输出一行一个整数,表示不同分块方案的种类数对 109+710 ^ 9 + 7109+7 取模的值。
样例
输入 111
4
3
1 2 3
3
1 2 4
输出 111
5
样例 111 说明
PinkRabbit 和 NaCly_Fish 都允许的块长为 {1,2}\{1,2\}{1,2}。
长度为 444 的序列分块,每块长度为 {1,2}\{1,2\}{1,2} 的方案有:
- 1 1 1 11\ 1\ 1\ 11 1 1 1
- 1 1 21\ 1\ 21 1&