#include<bits/stdc++.h>
#define int long long
#define N 200000
#define P 1000000009
using namespace std;
int T,n,aa,hsh[4][2*N+1],pw2[2*N+1];
//n1[2][2*N+1],n2[2][2*N+1],n3[2][2*N+1],l0,l1,st[2][4];
string s1,s2,s3,ans,ss[4];
//int calmi(string ns){
//	for(int i=0;i<ns.size();i++){
//		if(ns[i]=='0'){
//			int nans=0,ni=i;
//			while(ni<ns.size()&&ns[ni]=='0')ni++;
//			nans=ni-i;
//			return nans;
//		}
//	}
//}
bool fnd(int x,string ns){
	int np=0;
	for(int i=0;i<ns.size();i++){
		while(ss[x][np]!=ns[i]&&np<ss[x].size())np++;
		if(np>=ss[x].size())return 0;
		np++;
	}return 1;
}
signed main(){
	pw2[0]=1;for(int i=1;i<=2*N;i++)pw2[i]=pw2[i-1]*2%P;
	cin>>T;
	while(T--){
		cin>>n;
		cin>>s1>>s2>>s3;
		ss[1]=s1+s1;ss[2]=s2+s2;ss[3]=s3+s3;
		//for(int i=1;i<=3;i++)calhsh(i);
		bool ffl=0;
		for(int t=0;t<=1;t++){
		for(int i=1;i<=3;i++){
			for(int j=0;j<=1;j++){
				string ns=ss[i].substr(0,2*n);
				if(t==0)ns+=j+'0';
				else{
					string ng;ng.clear();ng+=j+'0';
					ns.insert(0,ng);
				}
				//int nh=(hsh[i][2*n]*2+j)%P;
				bool nfl=1;
				for(int k=1;k<=3;k++){
					if(k!=i&&!fnd(k,ns)){
						nfl=0;break;
					}
				}
				if(nfl){
					cout<<ns<<endl;
					ffl=1;break;
				}
			}if(ffl)break;
		}if(ffl)break;
		}
		if(ffl)continue;
		string ns;ns.clear();
		for(int i=0;i<=1;i++){
			for(int j=0;j<=1;j++){
				ns.clear();
				for(int k=1;k<=n;k++)ns+=i+'0';
				ns+=j+'0';
				for(int k=1;k<=n;k++)ns+=1-i+'0';
				bool nfl=1;
				for(int k=1;k<=3;k++){
					if(k!=i&&!fnd(k,ns)){
						nfl=0;break;
					}
				}
				if(nfl){
					cout<<ns<<endl;
					ffl=1;break;
				}
				ns.clear();ns+=j+'0';
				for(int k=1;k<=n;k++)ns+=i+'0';
				
				for(int k=1;k<=n;k++)ns+=1-i+'0';
				nfl=1;
				for(int k=1;k<=3;k++){
					if(k!=i&&!fnd(k,ns)){
						nfl=0;break;
					}
				}
				if(nfl){
					cout<<ns<<endl;
					ffl=1;break;
				}
				ns.clear();
				for(int k=1;k<=n;k++)ns+=i+'0';
				
				for(int k=1;k<=n;k++)ns+=1-i+'0';ns+=j+'0';
				nfl=1;
				for(int k=1;k<=3;k++){
					if(k!=i&&!fnd(k,ns)){
						nfl=0;break;
					}
				}
				if(nfl){
					cout<<ns<<endl;
					ffl=1;break;
				}
			}
			if(ffl)break;
		}
	}
	return 0;
}
/*
5
3
000111
001110
011100
2
0011
1001
0110
3
001011
101010
000111
3
001011
010101
110010
4
11010010
01010110
00011101

s1+=s1;s2+=s2;s3+=s3;
//		l0=l1=4*n;
//		for(int i=4*n-1;i>=0;i--){
//			n1[0][i]=l0;
//			n1[1][i]=l1;
//			if(s1[i]=='0')l0=i;
//			else l1=i;
//		}
//		st[0][1]=l0;st[1][1]=l1;
//		l0=l1=4*n;
//		for(int i=4*n-1;i>=0;i--){
//			n2[0][i]=l0;
//			n2[1][i]=l1;
//			if(s2[i]=='0')l0=i;
//			else l1=i;
//		}
//		st[0][2]=l0;st[1][2]=l1;
//		l0=l1=4*n;
//		for(int i=4*n-1;i>=0;i--){
//			n3[0][i]=l0;
//			n3[1][i]=l1;
//			if(s3[i]=='0')l0=i;
//			else l1=i;
//		}
//		st[0][3]=l0;st[1][3]=l1;
//		int np=st[0][1],nq=st[0][2],nr=st[0][3],nans=0;
//		ans.clear();
//		while(np<4*n&&nq<4*n&&nr<4*n){
//			nans++;ans+=s1[np];
//			if(max(n1[0][np],max(n2[0][nq],n3[0][nr]))<max(n1[1][np],max(n2[1][nq],n3[1][nr])))np=n1[0][np],nq=n2[0][nq],nr=n3[0][nr];
//			else np=n1[1][np],nq=n2[1][nq],nr=n3[1][nr];
//		}
//		if(nans>=2*n+1){
//			for(int i=0;i<=2*n;i++)printf("%c",ans[i]);printf("\n");
//			continue;
//		}
//		np=st[1][1],nq=st[1][2],nr=st[1][3],nans=0;
//		ans.clear();
//		while(np<4*n&&nq<4*n&&nr<4*n){
//			nans++;ans+=s1[np];
//			if(max(n1[0][np],max(n2[0][nq],n3[0][nr]))<max(n1[1][np],max(n2[1][nq],n3[1][nr])))np=n1[0][np],nq=n2[0][nq],nr=n3[0][nr];
//			else np=n1[1][np],nq=n2[1][nq],nr=n3[1][nr];
//		}
//		
//		for(int i=0;i<=2*n;i++)printf("%c",ans[i]);printf("\n");
*/
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n,t;
  string s;
  cin >> t;
  for(int i=0; i<t; i++) {
    cin >> n >> s >> s >> s;
    for(int i=0; i<n; i++) cout << 0;
    for(int i=0; i<n; i++) cout << 1;
    cout << 0 << endl;
  }
}