#abc130e. [abc130_e]Common Subsequence

[abc130_e]Common Subsequence

问题说明

给定两个整数序列SSTT,长度分别为NNMM,它们都由介于1110510^5之间(包括1110510^5)的整数组成。

有多少对SS的子序列和TT的子序列在内容上相同?

这里,序列AA的子序列是通过从AA中移除零个或多个元素,并将剩余的元素连接起来而得到的序列,而不改变顺序。

对于SSTT,即使子序列在内容上相同,如果删除的元素的下标集合不同,我们也认为它们是两个不同的子序列。

由于答案可能非常庞大,需要以109+710^9+7为模打印出结果。

约束条件

  • 1N,M2×1031 \leq N, M \leq 2 \times 10^3
  • SS的长度为NN
  • TT的长度为MM
  • 1Si,Ti1051 \leq S_i, T_i \leq 10^5
  • 输入中的所有值都是整数。

输入

输入以以下格式从标准输入中给出:

NN MM S1S_1 S2S_2 ...... SN1S_{N-1} SNS_{N} T1T_1 T2T_2 ...... TM1T_{M-1} TMT_{M}

输出

打印SS的子序列和TT的子序列相同的对数,以109+710^9+7为模。


示例输入 1

2 2
1 3
3 1

示例输出 1

3

SS有4个子序列:(),(1),(3),(1,3)(), (1), (3), (1, 3)

TT有4个子序列:(),(3),(1),(3,1)(), (3), (1), (3, 1)

存在1×11 \times 1个子序列对,子序列都是()();存在1×11 \times 1个子序列对,子序列都是(1)(1);存在1×11 \times 1个子序列对,子序列都是(3)(3)。总共有3对。


示例输入 2

2 2
1 1
1 1

示例输出 2

6

SS有4个子序列:(),(1),(1),(1,1)(), (1), (1), (1, 1)

TT有4个子序列:(),(1),(1),(1,1)(), (1), (1), (1, 1)

存在1×11 \times 1个子序列对,子序列都是()();存在2×22 \times 2个子序列对,子序列都是(1)(1);存在1×11 \times 1个子序列对,子序列都是(1,1)(1,1)。总共有6对。注意,即使子序列在内容上相同,如果删除的元素的下标集合不同,我们仍然认为它们是两个不同的子序列。


示例输入 3

4 4
3 4 5 6
3 4 5 6

示例输出 3

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

示例输入 5

20 20
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

示例输出 5

846527861

请务必打印结果并在109+710^9+7的模下计算。