MOD = 998244353
def solve(N, M, S, R, Q, X, Y):
from collections import Counter
prefix = {ch: [0] * (N + 1) for ch in set(S + R)}
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, r = X[i] - 1, Y[i]
freqS = {ch: prefix[ch][r] - prefix[ch][l] for ch in prefix}
ways = 1
for ch in freqR:
if freqS[ch] < freqR[ch]:
ways = 0
break
if ways != 0:
total = 1
for ch in freqR:
n = freqS[ch]
r = freqR[ch]
val = 1
for j in range(r):
val = val * (n - j) % MOD
total = (total * val) % MOD
ways = total
ans.append(ways % MOD)
print(" ".join(map(str, ans)))
if __name__ == "__main__":
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()))
solve(N, M, S, R, Q, X, Y)
TU9EID0gOTk4MjQ0MzUzCgpkZWYgc29sdmUoTiwgTSwgUywgUiwgUSwgWCwgWSk6CiAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDb3VudGVyCiAgICBwcmVmaXggPSB7Y2g6IFswXSAqIChOICsgMSkgZm9yIGNoIGluIHNldChTICsgUil9CiAgICBmb3IgaSBpbiByYW5nZShOKToKICAgICAgICBmb3IgY2ggaW4gcHJlZml4OgogICAgICAgICAgICBwcmVmaXhbY2hdW2kgKyAxXSA9IHByZWZpeFtjaF1baV0gKyAoMSBpZiBTW2ldID09IGNoIGVsc2UgMCkKICAgIGZyZXFSID0gQ291bnRlcihSKQogICAgYW5zID0gW10KICAgIGZvciBpIGluIHJhbmdlKFEpOgogICAgICAgIGwsIHIgPSBYW2ldIC0gMSwgWVtpXQogICAgICAgIGZyZXFTID0ge2NoOiBwcmVmaXhbY2hdW3JdIC0gcHJlZml4W2NoXVtsXSBmb3IgY2ggaW4gcHJlZml4fQogICAgICAgIHdheXMgPSAxCiAgICAgICAgZm9yIGNoIGluIGZyZXFSOgogICAgICAgICAgICBpZiBmcmVxU1tjaF0gPCBmcmVxUltjaF06CiAgICAgICAgICAgICAgICB3YXlzID0gMAogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiB3YXlzICE9IDA6CiAgICAgICAgICAgIHRvdGFsID0gMQogICAgICAgICAgICBmb3IgY2ggaW4gZnJlcVI6CiAgICAgICAgICAgICAgICBuID0gZnJlcVNbY2hdCiAgICAgICAgICAgICAgICByID0gZnJlcVJbY2hdCiAgICAgICAgICAgICAgICB2YWwgPSAxCiAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZShyKToKICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwgKiAobiAtIGopICUgTU9ECiAgICAgICAgICAgICAgICB0b3RhbCA9ICh0b3RhbCAqIHZhbCkgJSBNT0QKICAgICAgICAgICAgd2F5cyA9IHRvdGFsCiAgICAgICAgYW5zLmFwcGVuZCh3YXlzICUgTU9EKQogICAgcHJpbnQoIiAiLmpvaW4obWFwKHN0ciwgYW5zKSkpCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgVCA9IGludChpbnB1dCgpKQogICAgZm9yIF8gaW4gcmFuZ2UoVCk6CiAgICAgICAgTiwgTSA9IG1hcChpbnQsIGlucHV0KCkuc3BsaXQoKSkKICAgICAgICBTID0gaW5wdXQoKS5zdHJpcCgpCiAgICAgICAgUiA9IGlucHV0KCkuc3RyaXAoKQogICAgICAgIFEgPSBpbnQoaW5wdXQoKSkKICAgICAgICBYID0gbGlzdChtYXAoaW50LCBpbnB1dCgpLnNwbGl0KCkpKQogICAgICAgIFkgPSBsaXN0KG1hcChpbnQsIGlucHV0KCkuc3BsaXQoKSkpCiAgICAgICAgc29sdmUoTiwgTSwgUywgUiwgUSwgWCwgWSkK