#include #include #include #include #include #include #include #define eps 1e-9 #define INF 0x7FFFFFFF #define pi acos(-1) #define mod 998244353 #define LL long long #define nn 100005 using namespace std; LL b[nn],c[nn]; int main() { int T; scanf("%d",&T); while(T--) { LL n,i; scanf("%lld",&n); for(i=1;i<=n;i++) scanf("%lld",&b[i]); for(i=1;i<=n;i++) scanf("%lld",&c[i]); bool bre=0; for(i=1;i<=n;i++) { if(c[i]b[i-1]) { bre=1; break; } } for(i=2;i<=n;i++) { if(c[i]c[i-1]) { bre=1; break; } } if(bre) { puts("0"); continue; } LL ans=1; //memset(vis,0,sizeof(vis)); LL use=1,high,low,sum; for(i=1;i<=n;i++) { if(i==1) { if(b[i]!=c[i]) { puts("0"); ans=-1; break; } low=high=b[i]; //vis[b[i]]=1; } else { LL a1,a2; if(b[i]c[i-1]) a2=c[i]; else a2=0; if(a1) { low=a1; use++; } else if(a2) { high=a2; use++; } else { ans=(ans*(high-low+1-use))%mod; use++; } } } if(ans!=-1) printf("%lld\n",ans); } return 0; }