#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int Mod= 998244353;
const ll INF = 10000000000000;
const int N = 1e6+7;
void solve() {
int n;
cin >> n;
vector<int> pow2(n);
pow2[0]=1;
for(int i=1;i<n;i++) pow2[i]=(int)(2LL*pow2[i-1]%Mod)%Mod;
vector<int> p(n), q(n);
for(int i = 0; i < n; i++) cin >> p[i];
for(int i = 0; i < n; i++) cin >> q[i];
vector<int> Ppos(n), Qpos(n);
for(int i = 0; i < n; i++){
Ppos[p[i]] = i;
Qpos[q[i]] = i;
}
vector<int> mxP(n),mxQ(n);
int currp , currq;
currp = currq = -1;
for(int i=0;i<n;i++){
currp=max(currp,p[i]);
mxP[i]=currp;
currq=max(currq,q[i]);
mxQ[i]=currq;
}
vector<int> r(n);
int mi;
for(int i=0;i<n;i++){
int n1 = mxP[i];
int n2 = mxQ[i];
int N = max(n1,n2);
if(n1>n2){
int j = Ppos[n1];
mi = q[i-j];
}
else if(n2>n1){
int j = Qpos[n2];
mi= p[i-j];
}
else{
int j1=Ppos[n1];
int j2=Qpos[n2];
mi=max(p[i-j2],q[i-j1]);
}
r[i]=(pow2[N]+pow2[mi])%Mod;
}
for(int i=0;i<n;i++) cout << r[i] << " ";
cout << '\n';
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpjb25zdCBpbnQgTW9kPSA5OTgyNDQzNTM7CmNvbnN0IGxsIElORiA9IDEwMDAwMDAwMDAwMDAwOwpjb25zdCBpbnQgTiA9IDFlNis3OwoKICAgIHZvaWQgc29sdmUoKSB7CiAgICAgICAgaW50IG47CiAgICAgICAgY2luID4+IG47CiAgICAgICAgdmVjdG9yPGludD4gcG93MihuKTsKICAgICAgICBwb3cyWzBdPTE7CiAgICAgICAgZm9yKGludCBpPTE7aTxuO2krKykgIHBvdzJbaV09KGludCkoMkxMKnBvdzJbaS0xXSVNb2QpJU1vZDsKICAgICAgICB2ZWN0b3I8aW50PiBwKG4pLCBxKG4pOwogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNpbiA+PiBwW2ldOwogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNpbiA+PiBxW2ldOwogICAgICAgIHZlY3RvcjxpbnQ+IFBwb3MobiksIFFwb3Mobik7CiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkrKyl7CiAgICAgICAgICAgIFBwb3NbcFtpXV0gPSBpOwogICAgICAgICAgICBRcG9zW3FbaV1dID0gaTsKICAgICAgICB9CiAgICAgICAgdmVjdG9yPGludD4gbXhQKG4pLG14UShuKTsKICAgICAgICBpbnQgY3VycnAgLCBjdXJycTsKICAgICAgICBjdXJycCA9IGN1cnJxID0gLTE7CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgICAgIGN1cnJwPW1heChjdXJycCxwW2ldKTsKICAgICAgICAgICAgbXhQW2ldPWN1cnJwOwogICAgICAgICAgICBjdXJycT1tYXgoY3VycnEscVtpXSk7CiAgICAgICAgICAgIG14UVtpXT1jdXJycTsKICAgICAgICB9CiAgICAgICAgdmVjdG9yPGludD4gcihuKTsKICAgICAgICBpbnQgbWk7CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgICAgIGludCBuMSA9IG14UFtpXTsKICAgICAgICAgICAgaW50IG4yID0gbXhRW2ldOwogICAgICAgICAgICBpbnQgTiA9IG1heChuMSxuMik7CiAgICAgICAgICAgIGlmKG4xPm4yKXsKICAgICAgICAgICAgICAgaW50IGogPSBQcG9zW24xXTsKICAgICAgICAgICAgICAgbWkgPSBxW2ktal07IAogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYobjI+bjEpewogICAgICAgICAgICAgICAgaW50IGogPSBRcG9zW24yXTsKICAgICAgICAgICAgICAgIG1pPSBwW2ktal07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgaW50IGoxPVBwb3NbbjFdOwogICAgICAgICAgICAgICBpbnQgajI9UXBvc1tuMl07CiAgICAgICAgICAgICAgIG1pPW1heChwW2ktajJdLHFbaS1qMV0pOyAKICAgICAgICAgICAgfQogICAgICAgICAgICByW2ldPShwb3cyW05dK3BvdzJbbWldKSVNb2Q7CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspIGNvdXQgPDwgcltpXSA8PCAiICI7CiAgICAgICAgY291dCA8PCAnXG4nOwogICAgfQppbnQgbWFpbigpeyAKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgkKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSBzb2x2ZSgpOwogICAgCiAgICByZXR1cm4gMDsKfQ==