#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int l(string& a,string& b)
{
    int a0 = count(a.begin(),a.end(),'0');
    int a1 = a.length() - a0;

    int b0 = count(b.begin(),b.end(),'0');
    int b1 = b.length() - b0;

    return max(min(a0,b0),min(a1,b1));

}

string go(string& a,string& b)
{
    int n = a.length()/2;
    int a0 = count(a.begin(),a.end(),'0');
    int a1 = a.length() - a0;

    int b0 = count(b.begin(),b.end(),'0');
    int b1 = b.length() - b0;


    if (min(a0,b0) >= n){
        vector<int> pos1,pos2;

        for (int i=0;pos1.size()<n;i++)
            if (a[i] == '0')
                pos1.push_back(i);

        for (int i=0;pos2.size()<n;i++)
            if (b[i] == '0')
                pos2.push_back(i);

        int res = 3*n;


        for (int i=0;i<n;i++)
        {
            int len1 = pos1[i];
            int len2 = pos2[i];

            if (i){
                len1 -= pos1[i-1] + 1;
                len2 -= pos2[i-1] + 1;
            }

            int mx = max(len1,len2);

            while(mx--)
                --res, cout << 1;

            --res, cout << 0;

        }

        int posx = pos1.back();
        int posy = pos2.back();

        for (int i = posx+1;i<a.length();i++)
            --res, cout << a[i];


        for (int i = posy+1;i<b.length();i++)
            --res, cout << b[i];

        while(res--)
            cout << 0;

        cout << endl;

    } else if (min(a1,b1) >= n) {
        vector<int> pos1,pos2;

        for (int i=0;pos1.size()<n;i++)
            if (a[i] == '1')
                pos1.push_back(i);

        for (int i=0;pos2.size()<n;i++)
            if (b[i] == '1')
                pos2.push_back(i);

        int res = 3*n;

        for (int i=0;i<n;i++)
        {
            int len1 = pos1[i];
            int len2 = pos2[i];

            if (i){
                len1 -= pos1[i-1] + 1;
                len2 -= pos2[i-1] + 1;
            }

            int mx = max(len1,len2);

            while(mx--)
                --res, cout << 0;

            --res, cout << 1;

        }

        int posx = pos1.back();
        int posy = pos2.back();

        for (int i = posx+1;i<a.length();i++)
            --res, cout << a[i];


        for (int i = posy+1;i<b.length();i++)
            --res, cout << b[i];

        while(res--)
            cout << 1;
        cout << endl;
    }

    return "!";

}

string solve()
{
    int n;
    cin >> n;
    string a,b,c;
    cin >> a >> b >> c;

    if (l(a,b) >= n)
        return go(a,b);
    if (l(c,b) >= n)
        return go(c,b);
    if (l(a,c) >= n)
        return go(a,c);

    return "!";

}

int main() {
    int t;
    cin >> t;
    while(t--)
        solve();

    return 0;
}
