#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
while (t--) {
int n, k;
cin >> n >> k;
int a[2][n + 1]; // збільшено розмір
for (int i = 0; i < 2; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
vector<vector<int>> dp(n + 2, vector<int>(k + 2, 0));
dp[n][0] = 1;
for (int i = n; i >= 1; i--) {
for (int D = 0; D <= k + 1; D++) {
if (a[0][i - 1] == -1 && a[1][i - 2] == -1) {
for (int d = -k + 1; d <= k - 1; d++) {
int i1 = i - 1;
int D1 = max(0, D + d);
D1 = min(D1, k + 1);
if (D1 == 0 || d >= 0) {
dp[i1][D1] = (dp[i1][D1] + dp[i][D]) % mod;
}
}
} else if (a[0][i - 1] == -1 && a[1][i - 2] != -1) {
int y = a[1][i - 2];
for (int x = 1; x <= k; x++) {
int d = x - y;
int i1 = i - 1;
int D1 = max(0, D + d);
D1 = min(D1, k + 1);
if (D1 == 0 || d >= 0) {
dp[i1][D1] = (dp[i1][D1] + dp[i][D]) % mod;
}
}
} else if (a[0][i - 1] != -1 && a[1][i - 2] == -1) {
int x = a[0][i - 1];
for (int y = 1; y <= k; y++) {
int d = x - y;
int i1 = i - 1;
int D1 = max(0, D + d);
D1 = min(D1, k + 1);
if (D1 == 0 || d >= 0) {
dp[i1][D1] = (dp[i1][D1] + dp[i][D]) % mod;
}
}
} else {
int x = a[0][i - 1];
int y = a[1][i - 2];
int d = x - y;
int i1 = i - 1;
int D1 = max(0, D + d);
D1 = min(D1, k + 1);
if (D1 == 0 || d >= 0) {
dp[i1][D1] = (dp[i1][D1] + dp[i][D]) % mod;
}
}
}
}
int ans = 0;
for (int i = 0; i <= k + 1; i++) {
ans = (ans + dp[0][i]) % mod;
}
cout << ans << '\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBtb2QgPSA5OTgyNDQzNTM7CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwoKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgaW50IG4sIGs7CiAgICAgICAgY2luID4+IG4gPj4gazsKICAgICAgICBpbnQgYVsyXVtuICsgMV07IC8vINC30LHRltC70YzRiNC10L3QviDRgNC+0LfQvNGW0YAKCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuOyBqKyspIHsKICAgICAgICAgICAgICAgIGNpbiA+PiBhW2ldW2pdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGRwKG4gKyAyLCB2ZWN0b3I8aW50PihrICsgMiwgMCkpOwogICAgICAgIGRwW25dWzBdID0gMTsKCiAgICAgICAgZm9yIChpbnQgaSA9IG47IGkgPj0gMTsgaS0tKSB7CiAgICAgICAgICAgIGZvciAoaW50IEQgPSAwOyBEIDw9IGsgKyAxOyBEKyspIHsKICAgICAgICAgICAgICAgIGlmIChhWzBdW2kgLSAxXSA9PSAtMSAmJiBhWzFdW2kgLSAyXSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGQgPSAtayArIDE7IGQgPD0gayAtIDE7IGQrKykgewogICAgICAgICAgICAgICAgICAgICAgICBpbnQgaTEgPSBpIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IEQxID0gbWF4KDAsIEQgKyBkKTsKICAgICAgICAgICAgICAgICAgICAgICAgRDEgPSBtaW4oRDEsIGsgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEQxID09IDAgfHwgZCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcFtpMV1bRDFdID0gKGRwW2kxXVtEMV0gKyBkcFtpXVtEXSkgJSBtb2Q7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFbMF1baSAtIDFdID09IC0xICYmIGFbMV1baSAtIDJdICE9IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgaW50IHkgPSBhWzFdW2kgLSAyXTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMTsgeCA8PSBrOyB4KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGQgPSB4IC0geTsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGkxID0gaSAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBEMSA9IG1heCgwLCBEICsgZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIEQxID0gbWluKEQxLCBrICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChEMSA9PSAwIHx8IGQgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHBbaTFdW0QxXSA9IChkcFtpMV1bRDFdICsgZHBbaV1bRF0pICUgbW9kOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhWzBdW2kgLSAxXSAhPSAtMSAmJiBhWzFdW2kgLSAyXSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgIGludCB4ID0gYVswXVtpIC0gMV07CiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IDE7IHkgPD0gazsgeSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBkID0geCAtIHk7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBpMSA9IGkgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgRDEgPSBtYXgoMCwgRCArIGQpOwogICAgICAgICAgICAgICAgICAgICAgICBEMSA9IG1pbihEMSwgayArIDEpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoRDEgPT0gMCB8fCBkID49IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRwW2kxXVtEMV0gPSAoZHBbaTFdW0QxXSArIGRwW2ldW0RdKSAlIG1vZDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaW50IHggPSBhWzBdW2kgLSAxXTsKICAgICAgICAgICAgICAgICAgICBpbnQgeSA9IGFbMV1baSAtIDJdOwogICAgICAgICAgICAgICAgICAgIGludCBkID0geCAtIHk7CiAgICAgICAgICAgICAgICAgICAgaW50IGkxID0gaSAtIDE7CiAgICAgICAgICAgICAgICAgICAgaW50IEQxID0gbWF4KDAsIEQgKyBkKTsKICAgICAgICAgICAgICAgICAgICBEMSA9IG1pbihEMSwgayArIDEpOwogICAgICAgICAgICAgICAgICAgIGlmIChEMSA9PSAwIHx8IGQgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBkcFtpMV1bRDFdID0gKGRwW2kxXVtEMV0gKyBkcFtpXVtEXSkgJSBtb2Q7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpbnQgYW5zID0gMDsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBrICsgMTsgaSsrKSB7CiAgICAgICAgICAgIGFucyA9IChhbnMgKyBkcFswXVtpXSkgJSBtb2Q7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7CiAgICB9Cn0K