#include <bits/stdc++.h>
 
#define int long long

#define ext exit(0)
 
#define pii pair<int, int>
 
#define x1 x1228
#define y1 y1228
 
#define left left228
#define right right228

#define data data228
 
#define pb push_back
#define eb emplace_back
 
#define mp make_pair                                                                
                                                                                                                                        
#define ff first                                                                  
#define ss second   
 
#define all(x) x.begin(), x.end()
#define debug(x) cout << #x << ": " << x << endl; 
#define TIME (ld)clock()/CLOCKS_PER_SEC
 
using namespace std;
typedef long long ll; 
typedef long double ld; 
                                                                                                   
const int maxn = 3e5 + 7, mod = 1e9 + 7, MAXN = 2e6 + 7;
const double eps = 1e-9;                                        
const ll INF = 1e18, inf = 1e15;
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());                       
int n;
vector<string> a; 

void solve() {
    cin >> n;
    a.clear(); 
    for (int i = 0; i < 3; ++i) {
        string s; cin >> s; 
        a.pb(s); 
    }
    for (int i = 0; i < 3; ++i) {
        for (int j = i + 1; j < 3; ++j) {
            int one1 = 0; 
            int zero1 = 0; 
            
            int one2 = 0; 
            int zero2 = 0; 

            for (int p = 0; p < 2 * n; ++p) {
                if (a[i][p] == '0') {
                    ++zero1; 
                } else {
                    ++one1; 
                }

                if (a[j][p] == '0') {
                    ++zero2; 
                } else {
                    ++one2; 
                }
            }
            int o = min(one1, one2); 
            int z = min(zero1, zero2); 
            if (o >= n) {
                string res = ""; 
                int pt1 = 0; 
                int pt2 = 0; 
                while (o) {
                    while (a[i][pt1] != '1') {
                        res += a[i][pt1]; 
                        ++pt1; 
                    }                    
                    while (a[j][pt2] != '1') {
                        res += a[j][pt2]; 
                        ++pt2; 
                    }
                    ++pt1; 
                    ++pt2; 
                    res += '1'; 
                    --o; 
                }
                for (int k = pt1; k < 2 * n; ++k) res += a[i][k]; 
                for (int k = pt2; k < 2 * n; ++k) res += a[j][k]; 
                cout << res << '\n'; 
                return; 
            } else if (z >= n) {
                string res = ""; 
                int pt1 = 0; 
                int pt2 = 0; 
                while (z) {
                    while (a[i][pt1] != '0') {
                        res += a[i][pt1]; 
                        ++pt1; 
                    }                    
                    while (a[j][pt2] != '0') {
                        res += a[j][pt2]; 
                        ++pt2; 
                    }
                    ++pt1; 
                    ++pt2; 
                    res += '0'; 
                    --z; 
                }
                for (int k = pt1; k < 2 * n; ++k) res += a[i][k]; 
                for (int k = pt2; k < 2 * n; ++k) res += a[j][k]; 
                cout << res << '\n';
                return;           
            }
        }
    }
    cout << -1; 
}                                
                 
signed main() {          
#ifdef LOCAL
    freopen("TASK.in", "r", stdin);
    freopen("TASK.out", "w", stdout);
#endif // LOCAL                                                                             
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.precision(20); 
    cout << fixed; 
    int t = 1; cin >> t;  
    for (int i = 0; i < t; ++i) {              
        solve();
    }
    return 0;
}  