#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+3,M=5003,mod=998244353;
int n,a[M],b[M],ans;
int fac[N][4],prim[N],cnt;
int GCD[1003][1003];
inline int qpow(int x,int y)
{
int ret=1;
while(y)
{
if(y&1)
{
ret=(ll)ret*x%mod;
}
x=(ll)x*x%mod;
y>>=1;
}
return ret;
}
bitset<N> vis;
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(ch>'9'||ch<'0')
{
if(ch=='-')
{
f=-f;
}
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
int main()
{
n=read();
for(register int i=1;i<=n;++i)
{
a[i]=read();
}
for(register int i=1;i<=n;++i)
{
b[i]=read();
}
fac[1][1]=1;
fac[1][2]=1;
fac[1][3]=1;
for(register int i=2;i<=N-2;++i)
{
if(!vis[i])
{
prim[++cnt]=i;
fac[i][3]=i;
fac[i][1]=1;
fac[i][2]=1;
}
for(register int j=1;j<=cnt&&(ll)i*prim[j]<=N-2;++j)
{
if(!vis[i*prim[j]])
{
vis[i*prim[j]]=true;
fac[i*prim[j]][1]=fac[i][1]*prim[j];
fac[i*prim[j]][2]=fac[i][2];
fac[i*prim[j]][3]=fac[i][3];
if (fac[i*prim[j]][1]>fac[i*prim[j]][2])
{
fac[i*prim[j]][1]^=fac[i*prim[j]][2]^=fac[i*prim[j]][1]^=fac[i*prim[j]][2];
}
if (fac[i*prim[j]][2]>fac[i*prim[j]][3])
{
// fac[i*prim[j]][2]^=fac[i*prim[j]][3]^=fac[i*prim[j]]][2]^=fac[i*prim[j]][3];
fac[i*prim[j]][2]^=fac[i*prim[j]][3]^=fac[i*prim[j]][2]^=fac[i*prim[j]][3];
}
}
if(i%prim[j]==0)
{
break;
}
}
}
for(register int i=0;i<=1000;++i)
{
GCD[0][i]=GCD[i][0]=i;
}
for(register int i=1;i*i<=N-2;++i)
{
for(register int j=1;j<=i;++j)
{
GCD[j][i]=GCD[i][j]=GCD[j][i%j];
}
}
int k,wi;
int s[4],sue,yao;
for(register int i=1;i<=n;++i)
{
ans=0;
wi=1;
// cout<<fac[a[i]][1]<<" "<<fac[a[i]][2]<<" "<<fac[a[i]][3]<<endl;
for(register int j=1;j<=n;++j)
{
wi=(ll)wi*i%mod;
// cout<<fac[b[j]][1]<<" "<<fac[b[j]][2]<<" "<<fac[b[j]][3]<<endl;
if(!vis[a[i]])
{
if(b[j]%a[i]==0)
{
ans=((ll)ans+(ll)wi*a[i]%mod+mod)%mod;
}
else
{
ans=((ll)ans+(ll)wi%mod+mod)%mod;
}
continue;
}
else if(!vis[b[j]])
{
if(a[i]%b[j]==0)
{
ans=((ll)ans+(ll)wi*b[j]%mod+mod)%mod;
}
else
{
ans=((ll)ans+(ll)wi%mod+mod)%mod;
}
continue;
}
sue=1;
s[1]=fac[b[j]][1],s[2]=fac[b[j]][2],s[3]=fac[b[j]][3];
for(register int x=1;x<=3;++x)
{
k=fac[a[i]][x];
for(register int y=1;y<=3;++y)
{
sue=sue*GCD[k][s[y]]%mod;
yao=GCD[k][s[y]];
k/=yao;
s[y]/=yao;
}
}
ans=((ll)ans+(ll)wi*sue%mod+mod)%mod;
// cout<<sue<<endl;
}
printf("%d\n",ans);
}
return 0;
}