#include<bits/stdc++.h>
using namespace std;
#define int long long
int _,n,x,y,A,a[1<<20],b[1<<20],c[1<<20],d[1<<20],f[1<<20],O=998244353;
int F(int x){
return f[x]==x?x:f[x]=F(f[x]);
}
signed main(){
for(cin>>_;_--&&cin>>n;){
A=1;
for(int i=1;i<=n;i++)
cin>>a[i],c[i]=1,d[i]=0,f[i]=i;
for(int i=1;i<=n;i++)
cin>>b[i],x=F(a[i]),y=F(b[i]),d[x]++,A=A*(a[i]==b[i]?n*((O+1)/2)%O:1)%O,f[y]=x,c[x]+=(x!=y)*c[y],d[x]+=(x!=y)*d[y];
for(int i=1;i<=n;i++)
if(F(i)==i)
A=A*(c[i]==d[i])*2%O;
cout<<A<<'\n';
}
}