#include <bits/stdc++.h>
// #include <atcoder/all>
using namespace std;
// using namespace atcoder;
#define rep(i, n) for (int i = 0; i < (n); i++)
#define rep1(i, n) for (int i = 1; i <= (n); i++)
#define rrep(i, n) for (int i = n - 1; i >= 0; i--)
#define rrep1(i, n) for (int i = n; i >= 1; i--)
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define eb emplace_back
#define fi first
#define se second
#define sz(x) (int)(x).size()
template <class T> using V = vector<T>;
template <class T> using VV = V<V<T>>;
typedef long long int ll;
typedef pair<int, int> P;
// typedef modint1000000007 mint;

void speedUpIO() {
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
}

template <class T> bool chmax(T &a, const T &b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}
template <class T> bool chmin(T &a, const T &b) {
    if (b < a) {
        a = b;
        return true;
    }
    return false;
}
/*--------------------------------------------------*/
const int INF = 1e9;
const ll LINF = 1e18;

void solve() {
    int n;
    cin >> n;
    rep(i, 3) {
        string s;
        cin >> s;
    }
    string ans = string(n, '0');
    ans += string(n, '1');
    ans += "0";
    cout << ans << "\n";
}

int main() {
    speedUpIO();
    int t = 1;
    cin >> t;
    while (t--) {
        solve();
        // cout << solve() << "\n";
        // cout << (solve() ? "Yes" : "No") << "\n";
        // cout << fixed << setprecision(15) << solve() << "\n";
    }
    return 0;
}

#include <bits/stdc++.h>
#include"map"
#include"string"
#include"cmath"
#include"cstdio"
#include"iostream"
#include"cstring"
#include"algorithm"
#include"vector"
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
#ifdef local
#define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)
#else
#define debug(...) 42
#endif
#define f(i, l, r) for (int i = l; i <= r; ++i)
#define rf(i, r, l) for (int i = r; i >= l; --i)
#define all(x) (x).begin(), (x).end()
#define l l
#define r r
#define lch (o << 1)
#define rch (o << 1 | 1)
#define mid ((l + r) >> 1)

const int inf = 2e9 + 7;
double eps = 1e-6;
const int mod = 998244353;
const int N = 2e5 + 10;
const double pi = acos(-1.0);
ll power(ll a, ll b) { ll res = 1; while (b) { if (b & 1)res = res * a % mod; a = a * a % mod; b >>= 1; }return res; }
ll gcd(ll a, ll b) { return !b ? a : gcd(b, a % b); }
/*int len, C[N], clen;
int id(int v) { return lower_bound(C + 1, C + len, v) - C; }
void initC() { sort(C + 1, C + clen+1); len = unique(C + 1, C + 1 + clen) - C - 1; }*/

struct Edge {
    int v, w1, w2;
};
vector<Edge> g[N];
int cnt[N];
bool ok2 = 1;
bool get(int s, int x) {
    return (s >> x) & 1;
}
void dfs(int u, int f) {
    for (Edge e : g[u])if (e.v != f) {
        dfs(e.v, u);
        vector<bool> need(2);
        f(i, 0, 29) {
           // if(get(e.w1,i)^get(e.w2,i))
        }
    }
}
int main() {
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#ifdef local
    freopen("in.txt", "r", stdin);
#endif
    int _; cin >> _;
    while (_--) {
        int n; cin >> n;
        vector<string> s(3);
        for (auto& i : s)cin >> i;
        f(i, 1, n)cout << 0; f(i, 1, n)cout << 1;
        cout << 0 << "\n";
    }
    return 0;
    int n; cin >> n;
    bool ok = 1;
    f(i, 1, n - 1) {
        int u, v, w1, w2; cin >> u >> v >> w1 >> w2;
        g[u].push_back({ v,w1,w2 });
        g[v].push_back({ u,w1,w2 });
        if (w1 != w2)ok = 0;
    }
    
}