#include #include using namespace atcoder; using namespace std; using mint = modint1000000007; #define rep1(a) for (int i = 0; i < (a); i++) #define rep2(i, a) for (int i = 0; i < (a); i++) #define rep3(i, a, b) for (int i = a; i < (b); i++) #define rep4(i, a, b, c) for (int i = a; i < (b); i += c) #define overload4(a, b, c, d, e, ...) e #define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__) using ll = long long; constexpr ll INF = (1LL << 60); void chmax(ll& a, ll b) { a = max(a, b);} void chmin(ll& a, ll b) { a = min(a, b); } inline void YesNo(bool ok) { cout << (ok ? "Yes\n" : "No\n"); } template void input_vec(vector& v) { for (auto& x : v) cin >> x; } template void input(T&... a) { (cin >> ... >> a); } void print() { cout << '\n'; } template void print(const T& a, const Ts&... b) { cout << a; (cout << ... << (cout << ' ', b)); cout << '\n'; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T; cin >> T; rep(i, T) { int N; cin >> N; vector A(N), B(N); vector> C(N); rep(j, N) { ll a; cin >> a; A[j] = a; C[j] = {a, j}; } rep(j, N) cin >> B[j]; sort(C.rbegin(), C.rend()); vector SA(N+1), SB(N+1); rep(j, N) SA[j+1] = SA[j] + C[j].first; rep(j, N) SB[j+1] = SB[j] + B[j]; ll sum = SA[N]; int ans = 0; rep(j, N+1) { ll temp = SA[N-j] + SB[j]; //cout << temp << " " << SA[N-j] << " " << SB[j] << endl; if (temp > sum) { sum = temp; ans = j; } } vector h(N, '0'); rep(j, ans) { h[C[N-1-j].second] = '1'; } for (auto c : h) cout << c; cout << endl; } return 0; }