#include<bits/stdc++.h>
using namespace std;
using cd=complex<double>;
const double PI=acos(-1);
void fft(vector<cd> &a,bool invert)
{
int n=a.size();
if(n==1) return;
vector<cd> a0(n>>1),a1(n>>1);
for(int i=0;(i<<1)<n;i++){
a0[i]=a[i<<1];
a1[i]=a[(i<<1)+1];
}
fft(a0,invert);
fft(a1,invert);
double ang=2*PI/n*(invert?-1:1);
cd w(1),wn(cos(ang),sin(ang));
for(int i=0;(i<<1)<n;i++){
a[i]=a0[i]+w*a1[i];
a[i+(n>>1)]=a0[i]-w*a1[i];
if(invert){
a[i]/=2;
a[i+(n>>1)]/=2;
}
w*=wn;
}
}
vector<double> mul(vector<double> &a,vector<double> &b)
{
vector<cd> fa(a.begin(),a.end()),fb(b.begin(),b.end());
int n=1;
while(n<a.size()+b.size()){
n<<=1;
}
fa.resize(n);
fb.resize(n);
fft(fa,0);
fft(fb,0);
for(int i=0;i<n;i++){
fa[i]*=fb[i];
}
fft(fa,1);
vector<double> ans(n);
for(int i=0;i<n;i++){
ans[i]=fa[i].real();
}
return ans;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
while(t--){
int n,m;
cin>>n>>m;
n++;
m++;
vector<double> a(n),b(m);
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<m;i++){
cin>>b[i];
}
vector<double> ans=mul(a,b);
for(int i=0;i<n+m-1;i++){
cout<<setprecision(6)<<fixed<<ans[i]<<" ";
}
cout<<"\n";
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgY2Q9Y29tcGxleDxkb3VibGU+Owpjb25zdCBkb3VibGUgUEk9YWNvcygtMSk7CnZvaWQgZmZ0KHZlY3RvcjxjZD4gJmEsYm9vbCBpbnZlcnQpCnsKICAgIGludCBuPWEuc2l6ZSgpOwogICAgaWYobj09MSkgcmV0dXJuOwogICAgdmVjdG9yPGNkPiBhMChuPj4xKSxhMShuPj4xKTsKICAgIGZvcihpbnQgaT0wOyhpPDwxKTxuO2krKyl7CiAgICAgICAgYTBbaV09YVtpPDwxXTsKICAgICAgICBhMVtpXT1hWyhpPDwxKSsxXTsKICAgIH0KICAgIGZmdChhMCxpbnZlcnQpOwogICAgZmZ0KGExLGludmVydCk7CiAgICBkb3VibGUgYW5nPTIqUEkvbiooaW52ZXJ0Py0xOjEpOwogICAgY2QgdygxKSx3bihjb3MoYW5nKSxzaW4oYW5nKSk7CiAgICBmb3IoaW50IGk9MDsoaTw8MSk8bjtpKyspewogICAgICAgIGFbaV09YTBbaV0rdyphMVtpXTsKICAgICAgICBhW2krKG4+PjEpXT1hMFtpXS13KmExW2ldOwogICAgICAgIGlmKGludmVydCl7CiAgICAgICAgICAgIGFbaV0vPTI7CiAgICAgICAgICAgIGFbaSsobj4+MSldLz0yOwogICAgICAgIH0KICAgICAgICB3Kj13bjsKICAgIH0KfQp2ZWN0b3I8ZG91YmxlPiBtdWwodmVjdG9yPGRvdWJsZT4gJmEsdmVjdG9yPGRvdWJsZT4gJmIpCnsKICAgIHZlY3RvcjxjZD4gZmEoYS5iZWdpbigpLGEuZW5kKCkpLGZiKGIuYmVnaW4oKSxiLmVuZCgpKTsKICAgIGludCBuPTE7CiAgICB3aGlsZShuPGEuc2l6ZSgpK2Iuc2l6ZSgpKXsKICAgICAgICBuPDw9MTsKICAgIH0KICAgIGZhLnJlc2l6ZShuKTsKICAgIGZiLnJlc2l6ZShuKTsKICAgIGZmdChmYSwwKTsKICAgIGZmdChmYiwwKTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgIGZhW2ldKj1mYltpXTsKICAgIH0KICAgIGZmdChmYSwxKTsKICAgIHZlY3Rvcjxkb3VibGU+IGFucyhuKTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgIGFuc1tpXT1mYVtpXS5yZWFsKCk7CiAgICB9CiAgICByZXR1cm4gYW5zOwp9CmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICBpbnQgdDsKICAgIGNpbj4+dDsKICAgIHdoaWxlKHQtLSl7CiAgICAgICAgaW50IG4sbTsKICAgICAgICBjaW4+Pm4+Pm07CiAgICAgICAgbisrOwogICAgICAgIG0rKzsKICAgICAgICB2ZWN0b3I8ZG91YmxlPiBhKG4pLGIobSk7CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgICAgIGNpbj4+YVtpXTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTA7aTxtO2krKyl7CiAgICAgICAgICAgIGNpbj4+YltpXTsKICAgICAgICB9CiAgICAgICAgdmVjdG9yPGRvdWJsZT4gYW5zPW11bChhLGIpOwogICAgICAgIGZvcihpbnQgaT0wO2k8bittLTE7aSsrKXsKICAgICAgICAgICAgY291dDw8c2V0cHJlY2lzaW9uKDYpPDxmaXhlZDw8YW5zW2ldPDwiICI7CiAgICAgICAgfQogICAgICAgIGNvdXQ8PCJcbiI7CiAgICB9Cn0K