#include <bits/stdc++.h>
using namespace std;
#define ll long long 
int main() {
	ll t; 
	cin>>t; 
	while(t--){
		int n,m; 
		string s,ss; 
		cin>>n>>m; 
		cin>>s; 
		
		int z=n,o=m,que=0;
		
		for(int i=0;i<s.size();i++) {
		if(s[i]=='0')n--; 
		else if(s[i]=='1')m--; 
		else que++;
	}
	
	int sz=s.size(); 
	for(int i=0;i<sz;i++){
	   if(i==s[sz-i-1])continue; 
	   else if(s[i]=='?'&&s[sz-i-1]=='0'&&n>0)n--,s[i]='0';
	   else if(s[i]=='?'&&s[sz-i-1]=='1'&&m>0)m--,s[i]='1'; 
	}  
	
	for(int i=0;i<sz;i++){
	   if(i==s[sz-i-1])continue; 
	   else if(s[i]=='?'&&s[sz-i-1]=='?'&&n>1)n-=2,s[sz-i-1]='0',s[i]='0';
	   else if(s[i]=='?'&&s[sz-i-1]=='?'&&m>1)m-=2,s[sz-i-1]='1',s[i]='1';
	}
	
	if(s[sz/2]=='?'){if(n>0)s[sz/2]='0';else if(m>0)s[sz/2]='1';} 
	int coun[2]={0}; 

	for(int i=sz-1;i>=0;i--){
		ss+=s[i];
		if(s[i]!='?')
	    coun[s[i]-48]++; 
	} 
	if(s==ss&&coun[0]==z&&coun[1]==o)cout<<s<<endl; 
	else cout<<-1<<endl;
	}
	return 0;
}