在生物信息学研究中,研究员常需要比较两段基因序列的相似度。现有两段由核苷酸编号组成的序列 A 和 B,长度分别为 N 和 M。序列中的每个元素都是一个 [1,10^5] 之间的整数。
在比对过程中,研究员会从序列 A 中选出一个子序列 A′ ,再从序列 B 中选出一个子序列 B′。
如果子序列 A′与子序列 B′完全相同(即长度相同且对应位置的元素相等),则称其为一对“匹配子序列对”。
需要注意的是:
1.下标敏感:即使两个子序列所含的元素数值序列相同,只要选取的元素在原序列中的下标集合不同,就视为不同的子序列。
2.空序列:根据研究定义,从 A 和 B 中均不选取任何元素所构成的空序列对,也算作一对匹配子序列对。
3.子序列:从原序列中选择若干元素(可以不选),在不改变它们相对前后顺序的前提下,提取出来所组成的新序列。
请你编写程序,计算两段序列中共有多少对不同的“匹配子序列对”。由于答案可能很大,请输出对 10^9+7 取模后的结果。
第一行包含两个整数 N 和 M,分别表示序列 A 和 B 的长度。
第二行包含 N 个整数,表示序列 A 的各个元素。
第三行包含 M 个整数,表示序列 B 的各个元素。
输出一个整数,表示匹配子序列对的总数对 10^9+7 取模后的结果。
2 2 1 3 3 1
3
2 2 1 1 1 1
6
4 4 3 4 5 6 3 4 5 6
16
输入样例 4
10 9
9 6 5 7 5 9 8 5 6 7
8 6 8 5 5 7 9 9 7
输出样例 4
191
样例 1 说明:

样例 2 说明:

数据范围

对于 100% 的数据,满足 1≤N,M≤2000,1≤Ai,Bi≤10^5。
| 时间限制 | 1 秒 |
| 内存限制 | 128 MB |