#include #include #include #include #include using namespace std; typedef long long LL; const int MAXN = 1e5 + 10; const LL MOD = 998244353; int a[MAXN], b[MAXN]; int main() { //freopen("in.txt", "r", stdin); int T; scanf("%d", &T); while (T--) { int n; scanf("%d", &n); for (int i = 1; i <= n; ++i) scanf("%d", &a[i]); for (int i = 1; i <= n; ++i) scanf("%d", &b[i]); if (a[n] != 1 || b[n] != n || a[1] != b[1]) { puts("0"); continue; } LL ans = 1; bool flag = true; for (int i = 2; i <= n && ans; ++i) { if (a[i] > a[i - 1] || b[i] < b[i - 1]) flag = false; if (a[i - 1] - a[i] != 0 && b[i] - b[i - 1] != 0) flag = false; if (a[i] > b[i]) flag = false; if (!flag) break; if (a[i] == a[i - 1] && b[i] == b[i - 1]) ans = (ans * (b[i] - a[i] - i + 2)) % MOD; } if (!flag) { puts("0"); continue; } printf("%I64d\n", ans); } return 0; } /* 7 7 4 1 1 1 1 1 1 4 4 7 7 7 7 7 */