#include <bits/stdc++.h>
#define sc(x) scanf("%lld", &(x))
#define pr(x) printf("%lld\n", x)
#define endl '\n'
#define mem(x, y) memset(x, y, sizeof(x))
#define ios ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
#define pt putchar(10)
#define For(i, j, k) for (int i = (int)(j); i <= (int)(k); i++)
#define Rep(i, j, k) for (int i = (int)(j); i >= (int)(k); i--)
using namespace std;
typedef long long ll;
const int N = 1e6 + 7;
const ll mod = 1e9 + 7;
const double PI = acos(-1);
const int INF = 0x3f3f3f3f;
struct Complex {
double r, i;
Complex(double _r = 0, double _i = 0) {
r = _r;
i = _i;
}
Complex operator+(const Complex &b) { return Complex(r + b.r, i + b.i); }
Complex operator-(const Complex &b) { return Complex(r - b.r, i - b.i); }
Complex operator*(const Complex &b) {
return Complex(r * b.r - i * b.i, r * b.i + i * b.r);
}
Complex operator/(const Complex &b) {
ll d = (b.r * b.r + b.i * b.i);
return ((r * b.r + i * b.i) / d, (i * b.r + r * b.i) / d);
}
};
void change(Complex *y, int len) {
int i, j, k;
for (i = 1, j = len / 2; i < len - 1; i++) {
if (i < j)
swap(y[i], y[j]);
k = len / 2;
while (j >= k) {
j -= k;
k /= 2;
}
if (j < k)
j += k;
}
}
void fft(Complex *y, int len, int on) {
change(y, len);
for (int h = 2; h <= len; h <<= 1) {
Complex wn(cos(-on * 2 * PI / h), sin(-on * 2 * PI / h));
for (int j = 0; j < len; j += h) {
Complex w(1, 0);
for (int k = j; k < j + h / 2; k++) {
Complex u = y[k];
Complex t = w * y[k + h / 2];
y[k] = u + t;
y[k + h / 2] = u - t;
w = w * wn;
}
}
}
if (on == -1)
for (int i = 0; i < len; i++)
y[i].r /= len;
}
Complex x1[N << 2];
Complex x2[N << 2];
int n, m, a[N], b[N];
int num[N << 1];
int main(void) {
scanf("%d%d", &n, &m);
for (int i = 0; i <= n; i++)
scanf("%d", &a[i]);
for (int i = 0; i <= m; i++)
scanf("%d", &b[i]);
int len, len1;
// len1=n+m+1;
len = 1;
while (len < ((n + 1) << 1) || len < ((m + 1) << 1))
len <<= 1;
for (int i = 0; i <= n; i++)
x1[i] = Complex(a[i], 0);
for (int i = n + 1; i < len; i++)
x1[i] = Complex(0, 0);
for (int i = 0; i <= m; i++)
x2[i] = Complex(b[i], 0);
for (int i = m + 1; i < len; i++)
x2[i] = Complex(0, 0);
fft(x1, len, 1);
fft(x2, len, 1);
for (int i = 0; i < len; i++)
x1[i] = (x1[i] * x2[i]);
fft(x1, len, -1);
for (int i = 0; i <= n + m; i++)
num[i] = (x1[i].r + 0.5);
for (int i = 0; i <= n + m; i++)
printf("%d%c", num[i], i == n + m ? '\n' : ' ');
return 0;
}