N, M = map(int, input().split())
S = [0] + list(map(int, input().split()))
T = [0] + list(map(int, input().split()))
mod = 10**9 + 7

dp = [[0] * (M+1) for i in range(N+1)]
dp_sum = [[0] * (M+1) for i in range(N+1)]

for i in range(1, N+1):
    for j in range(1, M+1):
        if S[i] == T[j]:
            dp_sum[i][j] = dp_sum[i][j-1] + dp_sum[i-1][j] + 1
        else:
            dp_sum[i][j] = dp_sum[i][j-1] + dp_sum[i-1][j] - dp_sum[i-1][j-1]
        dp_sum[i][j] %= mod

print((dp_sum[N][M]+1) % mod) N, M = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split M S = [0] + list(map(int, input().split())) S [0] + list(map(int, input().split())) [0] 0 list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split T = [0] + list(map(int, input().split())) T [0] + list(map(int, input().split())) [0] 0 list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split mod = 10**9 + 7 mod 10**9 + 7 10**9 10 9 7 [0] * (M+1) for i in range(N+1) for i in range(N+1) i range(N+1) range N+1 N 1 for i in range(N+1) [0] * (M+1) [0] 0 M+1 M 1 dp = [[0] * (M+1) for i in range(N+1)] dp [[0] * (M+1) for i in range(N+1)] [0] * (M+1) for i in range(N+1) for i in range(N+1) i range(N+1) range N+1 N 1 for i in range(N+1) [0] * (M+1) [0] 0 M+1 M 1 dp_sum = [[0] * (M+1) for i in range(N+1)] dp_sum [[0] * (M+1) for i in range(N+1)] for i in range(1, N+1):
    for j in range(1, M+1):
        if S[i] == T[j]:
            dp_sum[i][j] = dp_sum[i][j-1] + dp_sum[i-1][j] + 1
        else:
            dp_sum[i][j] = dp_sum[i][j-1] + dp_sum[i-1][j] - dp_sum[i-1][j-1]
        dp_sum[i][j] %= mod i range(1, N+1) range 1 N+1 N 1 for j in range(1, M+1):
        if S[i] == T[j]:
            dp_sum[i][j] = dp_sum[i][j-1] + dp_sum[i-1][j] + 1
        else:
            dp_sum[i][j] = dp_sum[i][j-1] + dp_sum[i-1][j] - dp_sum[i-1][j-1]
        dp_sum[i][j] %= mod j range(1, M+1) range 1 M+1 M 1 if S[i] == T[j]:
            dp_sum[i][j] = dp_sum[i][j-1] + dp_sum[i-1][j] + 1
        else:
            dp_sum[i][j] = dp_sum[i][j-1] + dp_sum[i-1][j] - dp_sum[i-1][j-1]
         S[i] == T[j] S[i] S i T[j] T j dp_sum[i][j] = dp_sum[i][j-1] + dp_sum[i-1][j] + 1 dp_sum[i][j] [i] dp_sum i j dp_sum[i][j-1] + dp_sum[i-1][j] + 1 dp_sum[i][j-1] + dp_sum[i-1][j] dp_sum[i][j-1] [i] dp_sum i j-1 j 1 dp_sum[i-1][j] [i-1] dp_sum i-1 i 1 j 1 dp_sum[i][j] = dp_sum[i][j-1] + dp_sum[i-1][j] - dp_sum[i-1][j-1] dp_sum[i][j] [i] dp_sum i j dp_sum[i][j-1] + dp_sum[i-1][j] - dp_sum[i-1][j-1] dp_sum[i][j-1] + dp_sum[i-1][j] dp_sum[i][j-1] [i] dp_sum i j-1 j 1 dp_sum[i-1][j] [i-1] dp_sum i-1 i 1 j dp_sum[i-1][j-1] [i-1] dp_sum i-1 i 1 j-1 j 1 dp_sum[i][j] %= mod dp_sum[i][j] [i] dp_sum i j mod print((dp_sum[N][M]+1) % mod) print (dp_sum[N][M]+1) % mod dp_sum[N][M]+1 dp_sum[N][M] [N] dp_sum N M 1 mod mod = 10**9 + 7 10**9 + 7 mod M = map(int, input().split()) map(int, input().split()) M N, M = map(int, input().split()) map(int, input().split()) N T = [0] + list(map(int, input().split())) [0] + list(map(int, input().split())) T S = [0] + list(map(int, input().split())) [0] + list(map(int, input().split())) S dp = [[0] * (M+1) for i in range(N+1)] [[0] * (M+1) for i in range(N+1)] dp dp_sum = [[0] * (M+1) for i in range(N+1)] [[0] * (M+1) for i in range(N+1)] dp_sum
N, M = map(int, input().split())
S = [0] + list(map(int, input().split()))
T = [0] + list(map(int, input().split()))
mod = 10**9 + 7

dp = [[0] * (M+1) for i in range(N+1)]
dp_sum = [[0] * (M+1) for i in range(N+1)]

for i in range(1, N+1):
    for j in range(1, M+1):
        if S[i] == T[j]:
            dp_sum[i][j] = dp_sum[i][j-1] + dp_sum[i-1][j] + 1
        else:
            dp_sum[i][j] = dp_sum[i][j-1] + dp_sum[i-1][j] - dp_sum[i-1][j-1]
        dp_sum[i][j] %= mod

print((dp_sum[N][M]+1) % mod)
