rt
#include <bits/stdc++.h>
using namespace std;
int n,m;
struct Node{
double x,y;
Node(double xx=0,double yy=0){x=xx,y=yy;}
}a[3000005],b[3000005];
double pi=acos(-1);
Node operator-(Node a,Node b){return Node(a.x-b.x,a.y-b.y);}
Node operator+(Node a,Node b){return Node(a.x+b.x,a.y+b.y);}
Node operator*(Node a,Node b){return Node(a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x);}
void FFT(int len,Node *a,double op){
if(len==1)return ;
Node a1[len>>1],a2[len>>1];
for(int i=0;i<=len;i+=2)a1[i>>1]=a[i],a2[i>>1]=a[i+1];
FFT(len>>1,a1,op);FFT(len>>1,a2,op);
Node w=Node(1,0),Wn=Node(cos(2.0*pi/len),op*sin(2.0*pi/len));
for(int i=0;i<(len>>1);i++,w=w*Wn){
a[i]=a1[i]+w*a2[i];
a[i+(len>>1)]=a1[i]-w*a2[i];
}
}
int main(){
cin >> n >> m;
for(int i=0;i<=n;i++)cin >> a[i].x;
for(int i=0;i<=m;i++)cin >> b[i].x;
int len=1;
while(len<=n+m)len<<=1;
FFT(len,a,1.0);FFT(len,b,1.0);
for(int i=0;i<=len;i++)a[i]=a[i]*b[i];
FFT(len,a,-1.0);
for(int i=0;i<=n+m;i++){
printf("%d ",(int)(a[i].x/len+0.5));
}
return 0;
}