#include<bits/stdc++.h>
using namespace std;
struct gl{//定义结构体
int xb;//性别
double high;//身高,不是整数,不int
}a[100000];
int t,n,num;
int main(){
cin>>t;
for(int i=1;i<=t;i++){
cin>>n;
for(int j=1;j<=n;j++){
cin>>a[j].xb;
if(a[j].xb==0)num++;
}
for(int j=1;j<=n;j++){
cin>>a[j].high;
}
for(int j=1;j<=n-1;j++){
for(int k=1;k<=n-1;k++){
if(a[k].high>a[k+1].high){
swap(a[k],a[k+1]);
}
}
}
for(int j=1;j<=n-1;j++){
for(int k=1;k<=n-1;k++){
if(a[k].xb>a[k+1].xb){
swap(a[k],a[k+1]);
}
}
}
for(int j=1;j<=num;j++){
cout<<a[j].high<<" "<<endl;
}
for(int j=num+1;j<=n;j++){
cout<<a[j].high<<" ";
}
memset(a,0,sizeof(a));
}
return 0;
}