//NTT
#include<bits/stdc++.h>
using namespace std;
#define int long long
int read(){
int ch = getchar();
int fg = 1;
while(!isdigit(ch)){
if(ch=='-') fg = -1;
ch = getchar();
}
int res = 0;
while(isdigit(ch)){
res = res * 10 + ch - '0';
ch = getchar();
}
return res * fg;
}
const int mod = 998244353;
const int maxn = 2200000;
int n,m;
int s1[maxn],s2[maxn];
int ksm(int x,int y){
int res =x,ans = 1;
while(y){
if(y%2) ans = (ans * res) % mod;
res = (res * res) % mod;
y/=2;
}
return ans;
}
const int w = 3;
int r[maxn] = {0};
int ce;
int invn,invw;
void NTT(int f[],int opt){
for(int i = 0;i<ce;i++)
if(i<r[i]) swap(f[i],f[r[i]]);
for(int k = 2;k<=ce;k*=2){
int len = k/2;
int ww = ksm((opt==1)?w:invw,(mod-1)/k);
for(int p = 0;p<ce;p+=k){
int res = 1;
for(int i = 0;i<len;i++){
int cc = (f[p+i+len] *res) %mod;
f[p+i+len] = (f[p+i] - cc+mod) %mod;
f[p+i] = (f[p+i] + cc) %mod;
res = (res*ww)%mod;
}
}
}
}
signed main(){
n = read();
for(int i = 0;i<=n;i++) s1[i] = read();
m = read();
for(int i = 0;i<=m;i++) s2[i] = read();
ce = 1;
while(ce<(n+m+1)) ce<<=1;
invn = ksm(ce,mod-2),invw = ksm(w,mod-2);
r[0] = 0;
for(int i = 1;i<ce;i++) r[i] = (r[i>>1]>>1) + ((i%2)?(ce>>1):0);
NTT(s1,1);
NTT(s2,1);
for(int i = 0;i<ce;i++) s1[i] = (s1[i]*s2[i])%mod;
NTT(s1,-1);
for(int i = 0;i<(n+m+1);i++){
printf("%lld ",(s1[i]*invn)%mod);
}
return 0;
}