#include<bits/stdc++.h>
#define LL long long
#define R register int
using namespace std;
const int N=1000005;
LL f[N*3],g[N*3],ans[N*3],p=998244353,root=3,sz,bit,rev[N*3],powr[N*3],powinv[N*3],inv;
int n,m;
inline int read()
{
int s=0;char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) s=(s<<3)+(s<<1)+(c^48),c=getchar();
return s;
}
LL ksm(LL a,LL k)
{
LL rt=1;
while(k)
{
if(k&1) rt=rt*a%p;
a=a*a%p;k>>=1;
}
return rt;
}
void NTT(LL *a,int iv)
{
for(R i=0;i<sz;i++)
if(i<rev[i]) swap(a[i],a[rev[i]]);
for(R mid=1;(mid<<1)<=sz;mid<<=1)
{
LL w=(iv==1?powr[mid<<1]:powinv[mid<<1]);
for(R i=0;i<sz;i+=(mid<<1))
{
LL now=1;
for(R j=0;j<mid;j++,now=now*w%p)
{
LL x=a[i+j],y=now*a[i+j+mid]%p;
a[i+j]=(x+y)%p,a[i+j+mid]=(x-y+p)%p;
}
}
}
}
int main()
{
//freopen("P3803_9.in","r",stdin);
//freopen("me.out","w",stdout);
n=read();m=read();
for(R i=0;i<=n;i++) f[i]=read();
for(R i=0;i<=m;i++) g[i]=read();
for(sz=1;sz<=n+m;bit++,sz<<=1);
for(R i=0;i<sz;i++) rev[i]=(rev[i>>1]>>1)|((i&1)<<(bit-1));
inv=ksm(root,p-2);
for(R i=1;i<=sz;i<<=1) powr[i]=ksm(root,(p-1)/i),powinv[i]=ksm(inv,(p-1)/i);
NTT(f,1);NTT(g,1);
for(R i=0;i<sz;i++) ans[i]=f[i]*g[i]%p;
NTT(ans,-1);
LL div=ksm(sz,p-2)%p;
for(R i=0;i<=n+m;i++) printf("%lld ",ans[i]*div%p);
return 0;
}