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