N, M = map(int, input().split())
S = list(map(int, input().split()))
T = list(map(int, input().split()))
MOD = 10**9 + 7

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

for i, s in enumerate(S, start=1):
    for j, t in enumerate(T, start=1):
        if s == t:
            dp[i][j] = (dp[i - 1][j] + dp[i][j - 1] + 1) % MOD
        else:
            dp[i][j] = (dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]) % MOD

print((dp[N][M] + 1) % MOD) N, M = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split M S = list(map(int, input().split())) S list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split T = list(map(int, input().split())) T 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 _ in range(N + 1) for _ in range(N + 1) _ range(N + 1) range N + 1 N 1 for _ in range(N + 1) [0] * (M + 1) [0] 0 M + 1 M 1 dp = [[0] * (M + 1) for _ in range(N + 1)] dp [[0] * (M + 1) for _ in range(N + 1)] for i, s in enumerate(S, start=1):
    for j, t in enumerate(T, start=1):
        if s == t:
            dp[i][j] = (dp[i - 1][j] + dp[i][j - 1] + 1) % MOD
        else:
            dp[i][j] = (dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]) % MOD i s enumerate(S, start=1) enumerate S start=1 start 1 for j, t in enumerate(T, start=1):
        if s == t:
            dp[i][j] = (dp[i - 1][j] + dp[i][j - 1] + 1) % MOD
        else:
            dp[i][j] = (dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]) % MOD j t enumerate(T, start=1) enumerate T start=1 start 1 if s == t:
            dp[i][j] = (dp[i - 1][j] + dp[i][j - 1] + 1) % MOD
        else:
            dp[i][j] = (dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]) % MOD s == t s t dp[i][j] = (dp[i - 1][j] + dp[i][j - 1] + 1) % MOD dp[i][j] [i] dp i j (dp[i - 1][j] + dp[i][j - 1] + 1) % MOD dp[i - 1][j] + dp[i][j - 1] + 1 dp[i - 1][j] + dp[i][j - 1] dp[i - 1][j] [i - 1] dp i - 1 i 1 j dp[i][j - 1] [i] dp i j - 1 j 1 1 MOD dp[i][j] = (dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]) % MOD dp[i][j] [i] dp i j (dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]) % MOD dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1] dp[i - 1][j] + dp[i][j - 1] dp[i - 1][j] [i - 1] dp i - 1 i 1 j dp[i][j - 1] [i] dp i j - 1 j 1 dp[i - 1][j - 1] [i - 1] dp i - 1 i 1 j - 1 j 1 MOD print((dp[N][M] + 1) % MOD) print (dp[N][M] + 1) % MOD dp[N][M] + 1 dp[N][M] [N] dp N M 1 MOD M = map(int, input().split()) map(int, input().split()) M dp = [[0] * (M + 1) for _ in range(N + 1)] [[0] * (M + 1) for _ in range(N + 1)] dp T = list(map(int, input().split())) list(map(int, input().split())) T MOD = 10**9 + 7 10**9 + 7 MOD S = list(map(int, input().split())) list(map(int, input().split())) S N, M = map(int, input().split()) map(int, input().split()) N
N, M = map(int, input().split())
S = list(map(int, input().split()))
T = list(map(int, input().split()))
MOD = 10**9 + 7

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

for i, s in enumerate(S, start=1):
    for j, t in enumerate(T, start=1):
        if s == t:
            dp[i][j] = (dp[i - 1][j] + dp[i][j - 1] + 1) % MOD
        else:
            dp[i][j] = (dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]) % MOD

print((dp[N][M] + 1) % MOD)
