#include "bits/stdc++.h" // #pragma GCC optimize("O3,unroll-loops") // #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") using namespace std; using ll = long long int; mt19937_64 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); int main() { ios::sync_with_stdio(false); cin.tie(0); int t; cin >> t; while (t--) { int n; cin >> n; vector<int> a(n), b(n); array<int, 20> allct{}, hsbct{}; array<array<int, 20>, 20> bitct{}; ll sumB = 0; for (int &x : a) cin >> x; for (int &x : b) { cin >> x; sumB += x; if (x == 0) continue; int hsb = 20; while (~x&(1<<hsb)) --hsb; ++hsbct[hsb]; for (int i = 0; i < 20; ++i) { allct[i] += (x>>i)&1; bitct[hsb][i] += (x>>i)&1; } } sort(rbegin(a), rend(a)); ll ans = 0; int hsb = 20; for (int x : a) { if (x == 0) { ans += sumB; continue; } while (~x&(1<<hsb)) --hsb; // Same hsb -> AND for (int bit = 0; bit < 20; ++bit) { if (~x & (1<<bit)) continue; ans += (1LL<<bit) * bitct[hsb][bit]; } // Different hsb -> XOR for (int bit = 0; bit < 20; ++bit) { int ct = 0; if (x & (1<<bit)) ct = n - allct[bit] - (hsbct[hsb] - bitct[hsb][bit]); else ct = allct[bit] - bitct[hsb][bit]; ans += (1LL<<bit) * ct; } } cout << ans << '\n'; } }