#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
int a[100005],b[100005];
const LL mod=998244353;
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif // LOCAL
int T;
scanf("%d",&T);
while(T--)
{
memset(t,0,sizeof(t));
LL ans=1;
int n;
scanf("%d",&n);
for(int i=0; i<n; i++)
{
scanf("%d",&a[i]);
if(i&&a[i]>a[i-1])
ans=0;
}
for(int i=0; i<n; i++)
{
scanf("%d",&b[i]);
if(i&&b[i]<b[i-1])
ans=0;
}
if(ans)
for(int i=1; i<n; i++)
{
if(a[i]==a[i-1]&&b[i]==b[i-1])
{
if(b[i]-a[i]-i+1<=0)//這個值等於(a[i],b[i])區間的數值)
{
ans=0;
break;
}
ans=(ans*(b[i]-a[i]-i+1))%mod;
}
else if(a[i]!=a[i-1]&&b[i]!=b[i-1])
{
ans=0;
break;
}
}
cout<<ans<<endl;
}
return 0;
}
=_=太智障以至於想不到b[i]-a[i]-i+1….