//Quiz 2 Rizki Farih Ardian
#include <bits/stdc++.h>
using namespace std;

int main() {
    int t;
    cin >> t;
    
    while (t--) {
        int n;
        cin >> n;
        
        vector<long long> a(n);
        vector<int> locked(n);
        
        for (int i = 0; i < n; i++) {
            cin >> a[i];
        }
        
        for (int i = 0; i < n; i++) {
            cin >> locked[i];
        }
        
        // Kumpulkan nilai pada posisi unlocked
        vector<long long> unlocked_values;
        for (int i = 0; i < n; i++) {
            if (locked[i] == 0) {
                unlocked_values.push_back(a[i]);
            }
        }
        
        sort(unlocked_values.begin(), unlocked_values.end(), greater<long long>());
        
        int idx = 0;
        for (int i = 0; i < n; i++) {
            if (locked[i] == 0) {
                a[i] = unlocked_values[idx++];
            }
        }
        
        for (int i = 0; i < n; i++) {
            cout << a[i] << " ";
        }
        cout << endl;
    }
    
    return 0;
}