#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx,avx2,sse,sse2")
#include <bits/stdc++.h>

using namespace std;

#define endl "\n"
#define int long long

const int N = 1e3 + 5;
int n;
string s[3];

int count(string s, char ch){
    int tot = 0;
    for(int i = 0;i < s.size();++i){
        tot += s[i] == ch;
    }
    return tot;
}

string givecommon(string a, string b){
    int zeros = 0, ones = 0;
    zeros = min(count(a, '0'), count(b, '0'));
    ones = min(count(a, '1'), count(b, '1'));
    
    string s1 = "";
    
    if(zeros >= n){
        for(int i = 0;i < zeros;++i) s1 += '0';
    }
    else if(ones >= n){
        for(int i = 0;i < ones;++i) s1 += '1';
    }
    else s1 = "";

    return s1;
}

void solve(){
    cin >> n >> s[0] >> s[1] >> s[2];

    for(int i = 0;i < 3;++i){
        string s1 = givecommon(s[i], s[(i + 1) % 3]);
        if(s1.size() >= n){
            string ans = "";
            int ind1 = 0, ind2 = 0;
            for(int j = 0;j < s1.size();++j){
                while(ind1 < 2 * n and s[i][ind1] != s1[j]){
                    ans += s[i][ind1];
                    ind1++;
                }
                while(ind2 < 2 * n and s[(i + 1) % 3][ind2] != s1[j]){
                    ans += s[(i + 1) % 3][ind2];
                    ind2++;
                }
                ans += s1[j];
                ind1++;
                ind2++;
            }
            while(ind1 < 2 * n){
                ans += s[i][ind1];
                ind1++;
            }
            while(ind2 < 2 * n){
                ans += s[(i + 1) % 3][ind2];
                ind2++;
            }
            cout << ans << endl;
            return;
        }
    }
    
}


signed main(){
    ios :: sync_with_stdio(false);
    cin.tie(0); cout.tie(0);


    int t = 1;
    cin >> t;
    while(t--){
        solve();

    }
    

}