MOD = 998244353
def solve(N, M, S, R, Q, X, Y):
from collections import Counter
def modinv(a): return pow(a, MOD - 2, MOD)
fact = [1] * (N + 1)
invfact = [1] * (N + 1)
for i in range(1, N + 1):
fact[i] = fact[i - 1] * i % MOD
invfact[N] = modinv(fact[N])
for i in range(N - 1, -1, -1):
invfact[i] = invfact[i + 1] * (i + 1) % MOD
def nCr(n, r):
if n < r or r < 0: return 0
return fact[n] * invfact[r] % MOD * invfact[n - r] % MOD
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
prefix = {ch: [0] * (N + 1) for ch in chars}
for i in range(N):
for ch in prefix:
prefix[ch][i + 1] = prefix[ch][i] + (1 if S[i] == ch else 0)
freqR = Counter(R)
ans = []
for i in range(Q):
l, rpos = X[i] - 1, Y[i]
freqS = {ch: prefix[ch][rpos] - prefix[ch][l] for ch in prefix}
total = 1
for ch in freqR:
total = total * nCr(freqS.get(ch, 0), freqR[ch]) % MOD
ans.append(total)
return ans
T = int(input())
for _ in range(T):
N, M = map(int, input().split())
S = input().strip()
R = input().strip()
Q = int(input())
X = list(map(int, input().split()))
Y = list(map(int, input().split()))
out_ = solve(N, M, S, R, Q, X, Y)
print(" ".join(map(str, out_)))
TU9EID0gOTk4MjQ0MzUzCgpkZWYgc29sdmUoTiwgTSwgUywgUiwgUSwgWCwgWSk6CiAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDb3VudGVyCiAgICBkZWYgbW9kaW52KGEpOiByZXR1cm4gcG93KGEsIE1PRCAtIDIsIE1PRCkKICAgIGZhY3QgPSBbMV0gKiAoTiArIDEpCiAgICBpbnZmYWN0ID0gWzFdICogKE4gKyAxKQogICAgZm9yIGkgaW4gcmFuZ2UoMSwgTiArIDEpOgogICAgICAgIGZhY3RbaV0gPSBmYWN0W2kgLSAxXSAqIGkgJSBNT0QKICAgIGludmZhY3RbTl0gPSBtb2RpbnYoZmFjdFtOXSkKICAgIGZvciBpIGluIHJhbmdlKE4gLSAxLCAtMSwgLTEpOgogICAgICAgIGludmZhY3RbaV0gPSBpbnZmYWN0W2kgKyAxXSAqIChpICsgMSkgJSBNT0QKICAgIGRlZiBuQ3Iobiwgcik6CiAgICAgICAgaWYgbiA8IHIgb3IgciA8IDA6IHJldHVybiAwCiAgICAgICAgcmV0dXJuIGZhY3Rbbl0gKiBpbnZmYWN0W3JdICUgTU9EICogaW52ZmFjdFtuIC0gcl0gJSBNT0QKICAgIGNoYXJzID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5JwogICAgcHJlZml4ID0ge2NoOiBbMF0gKiAoTiArIDEpIGZvciBjaCBpbiBjaGFyc30KICAgIGZvciBpIGluIHJhbmdlKE4pOgogICAgICAgIGZvciBjaCBpbiBwcmVmaXg6CiAgICAgICAgICAgIHByZWZpeFtjaF1baSArIDFdID0gcHJlZml4W2NoXVtpXSArICgxIGlmIFNbaV0gPT0gY2ggZWxzZSAwKQogICAgZnJlcVIgPSBDb3VudGVyKFIpCiAgICBhbnMgPSBbXQogICAgZm9yIGkgaW4gcmFuZ2UoUSk6CiAgICAgICAgbCwgcnBvcyA9IFhbaV0gLSAxLCBZW2ldCiAgICAgICAgZnJlcVMgPSB7Y2g6IHByZWZpeFtjaF1bcnBvc10gLSBwcmVmaXhbY2hdW2xdIGZvciBjaCBpbiBwcmVmaXh9CiAgICAgICAgdG90YWwgPSAxCiAgICAgICAgZm9yIGNoIGluIGZyZXFSOgogICAgICAgICAgICB0b3RhbCA9IHRvdGFsICogbkNyKGZyZXFTLmdldChjaCwgMCksIGZyZXFSW2NoXSkgJSBNT0QKICAgICAgICBhbnMuYXBwZW5kKHRvdGFsKQogICAgcmV0dXJuIGFucwoKVCA9IGludChpbnB1dCgpKQpmb3IgXyBpbiByYW5nZShUKToKICAgIE4sIE0gPSBtYXAoaW50LCBpbnB1dCgpLnNwbGl0KCkpCiAgICBTID0gaW5wdXQoKS5zdHJpcCgpCiAgICBSID0gaW5wdXQoKS5zdHJpcCgpCiAgICBRID0gaW50KGlucHV0KCkpCiAgICBYID0gbGlzdChtYXAoaW50LCBpbnB1dCgpLnNwbGl0KCkpKQogICAgWSA9IGxpc3QobWFwKGludCwgaW5wdXQoKS5zcGxpdCgpKSkKICAgIG91dF8gPSBzb2x2ZShOLCBNLCBTLCBSLCBRLCBYLCBZKQogICAgcHJpbnQoIiAiLmpvaW4obWFwKHN0ciwgb3V0XykpKQo=