//...START BY DOING WHAT IS NECESSARY, THEN WHAT IS POSSIBLE AND SUDDENLY YOU ARE DOING THE IMPOSSIBLE...
#include <bits/stdc++.h>
using namespace std;
#define FAST_FURIER ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define pb push_back
#define rep(i,a,N) for(ll i=a;i<N;i++)
typedef long long ll;
#define endl '\n'
bool comp(int x,int y)
{
return x > y;
}
/*..............................code starts here........................*/
vector<vector<ll> > vec;
int rem(int remain,int index,int pro,int count,int n){
if(index >= vec[count].size())
return remain;
int a = rem((pro*vec[count][index])%n, index+1, (pro*vec[count][index])%n,count,n);
int b = rem(vec[count][index]%n, index+1, (vec[count][index])%n,count,n);
return max(remain,max(a,b));
}
int main() {
FAST_FURIER;
int t=1;
cin >> t;
ll m,n,k;
string a,b;
while(t--)
{
cin >> n >> m;
ll position[n+1],M[m+1],N[n+1];
rep(i,1,n+1) cin >> position[i];
rep(i,1,n+1) cin >> N[i];
rep(i,1,m+1) cin >> M[i];
vec.resize(m+1);
rep(i,1,n+1){
if(N[i]%M[position[i]] != 0)
vec[position[i]].pb(N[i]%M[position[i]]);
}
rep(i,1,m+1){
if(vec[i].size() == 0)
cout << 0 << " ";
else
cout << rem(vec[i][0]%M[i], 1, vec[i][0], i, M[i]) << " ";
}
cout << endl;
vec.clear();
}
}
Ly8uLi5TVEFSVCBCWSBET0lORyBXSEFUIElTIE5FQ0VTU0FSWSwgVEhFTiBXSEFUIElTIFBPU1NJQkxFIEFORCBTVURERU5MWSBZT1UgQVJFIERPSU5HIFRIRSBJTVBPU1NJQkxFLi4uIAojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBGQVNUX0ZVUklFUiBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcmVwKGksYSxOKSBmb3IobGwgaT1hO2k8TjtpKyspCnR5cGVkZWYgbG9uZyBsb25nIGxsOwojZGVmaW5lIGVuZGwgJ1xuJwpib29sIGNvbXAoaW50IHgsaW50IHkpCnsKICAgIHJldHVybiB4ID4geTsgICAKfQoKCi8qLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uY29kZSBzdGFydHMgaGVyZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiovCnZlY3Rvcjx2ZWN0b3I8bGw+ID4gdmVjOwoKaW50IHJlbShpbnQgcmVtYWluLGludCBpbmRleCxpbnQgcHJvLGludCBjb3VudCxpbnQgbil7CiAgICBpZihpbmRleCA+PSB2ZWNbY291bnRdLnNpemUoKSkKICAgIHJldHVybiByZW1haW47CiAgICBpbnQgYSA9IHJlbSgocHJvKnZlY1tjb3VudF1baW5kZXhdKSVuLCBpbmRleCsxLCAocHJvKnZlY1tjb3VudF1baW5kZXhdKSVuLGNvdW50LG4pOwogICAgaW50IGIgPSByZW0odmVjW2NvdW50XVtpbmRleF0lbiwgaW5kZXgrMSwgKHZlY1tjb3VudF1baW5kZXhdKSVuLGNvdW50LG4pOwogICAgcmV0dXJuIG1heChyZW1haW4sbWF4KGEsYikpOwp9CmludCBtYWluKCkgewogICAgRkFTVF9GVVJJRVI7CiAgICBpbnQgdD0xOwogICAgY2luID4+IHQ7CiAgICBsbCBtLG4sazsKICAgIHN0cmluZyBhLGI7CiAgICB3aGlsZSh0LS0pICAKICAgIHsKICAgICAgICBjaW4gPj4gbiA+PiBtOwogICAgICAgIGxsIHBvc2l0aW9uW24rMV0sTVttKzFdLE5bbisxXTsKCiAgICAgICAgcmVwKGksMSxuKzEpIGNpbiA+PiBwb3NpdGlvbltpXTsKCiAgICAgICAgcmVwKGksMSxuKzEpIGNpbiA+PiBOW2ldOwoKICAgICAgICByZXAoaSwxLG0rMSkgY2luID4+IE1baV07CgogICAgICAgIHZlYy5yZXNpemUobSsxKTsKICAgICAgICByZXAoaSwxLG4rMSl7CiAgICAgICAgICAgIGlmKE5baV0lTVtwb3NpdGlvbltpXV0gIT0gMCkKICAgICAgICAgICAgdmVjW3Bvc2l0aW9uW2ldXS5wYihOW2ldJU1bcG9zaXRpb25baV1dKTsKICAgICAgICB9CgogICAgICAgIHJlcChpLDEsbSsxKXsKICAgICAgICAgICAgaWYodmVjW2ldLnNpemUoKSA9PSAwKQogICAgICAgICAgICBjb3V0IDw8IDAgPDwgIiAiOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGNvdXQgPDwgcmVtKHZlY1tpXVswXSVNW2ldLCAxLCB2ZWNbaV1bMF0sIGksIE1baV0pIDw8ICIgIjsKICAgICAgICB9CiAgICAgICAgY291dCA8PCBlbmRsOwogICAgICAgIHZlYy5jbGVhcigpOwogICAgfQp9Cg==