#include<bits/stdc++.h>
#define LL long long
#define mp make_pair
#define fi first
#define se second
using namespace std;
int read(){
	char ch=getchar(); int x=0,fl=1;
	for(;!isdigit(ch);ch=getchar()) if(ch=='-') fl=-1;
	for(;isdigit(ch);ch=getchar()) x=(x<<3)+(x<<1)+(ch-'0');
	return x*fl;
}
const int N=500005;

//tjc
int n,l,aft[N];
string s1,s2,s3;
pair<bool,string> ok(string s1,string s2){
	int c11=0,c10=0,c21=0,c20=0;
	for(int i=0;i<=l;i++) aft[i]=0; 
	for(int i=0;i<l;i++){
		if(s1[i]=='1') c11++;
		else c10++;
		if(s2[i]=='1') c21++;
		else c20++;
	}
	string res="";
	if(c11>=n&&c21>=n){
		if(c11<=c21) swap(s1,s2);
		int ct=0,cur=0;
		for(int i=0;i<l;i++){
			if(s2[i]=='0') ct++;
			else{
				aft[cur]=ct;
				cur++;
				ct=0;
			}
		}
		aft[cur]=ct;
		cur=0;
		for(int i=1;i<=aft[cur];i++) res+='0';
		for(int i=0;i<l;i++){
			res+=s1[i];
			if(s1[i]=='1'){
				cur++;
				for(int j=1;j<=aft[cur];j++) res+='0';
			}
		}
		assert(res.size()<=n*3);
		return mp(1,res);
	}
	if(c10>=n&&c20>=n){
		if(c10<=c20) swap(s1,s2);
		int ct=0,cur=0;
		for(int i=0;i<l;i++){
			if(s2[i]=='1') ct++;
			else{
				aft[cur]=ct;
				cur++;
				ct=0;
			}
		}
		aft[cur]=ct;
		cur=0;
		for(int i=1;i<=aft[cur];i++) res+='1';
		for(int i=0;i<l;i++){
			res+=s1[i];
			if(s1[i]=='0'){
				cur++;
				for(int j=1;j<=aft[cur];j++) res+='1';
			}
		}
		assert(res.size()<=n*3);
		return mp(1,res);
	}
	return mp(0,"");
}

void solve(){
	n=read(); l=n<<1;
	cin>>s1>>s2>>s3;
	pair<bool,string> tmp=ok(s1,s2);
	if(tmp.fi){
		cout<<tmp.se<<'\n';
		return;
	}
	tmp=ok(s1,s3);
	if(tmp.fi){
		cout<<tmp.se<<'\n';
		return;
	}
	tmp=ok(s2,s3);
	if(tmp.fi){
		cout<<tmp.se<<'\n';
		return;
	}
}

int main(){
	int T=read();
	while(T--) solve();
	return 0;
}
