#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;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nIAppbnQgbWFpbigpIHsKCWxsIHQ7IAoJY2luPj50OyAKCXdoaWxlKHQtLSl7CgkJaW50IG4sbTsgCgkJc3RyaW5nIHMsc3M7IAoJCWNpbj4+bj4+bTsgCgkJY2luPj5zOyAKCQkKCQlpbnQgej1uLG89bSxxdWU9MDsKCQkKCQlmb3IoaW50IGk9MDtpPHMuc2l6ZSgpO2krKykgewoJCWlmKHNbaV09PScwJyluLS07IAoJCWVsc2UgaWYoc1tpXT09JzEnKW0tLTsgCgkJZWxzZSBxdWUrKzsKCX0KCQoJaW50IHN6PXMuc2l6ZSgpOyAKCWZvcihpbnQgaT0wO2k8c3o7aSsrKXsKCSAgIGlmKGk9PXNbc3otaS0xXSljb250aW51ZTsgCgkgICBlbHNlIGlmKHNbaV09PSc/JyYmc1tzei1pLTFdPT0nMCcmJm4+MCluLS0sc1tpXT0nMCc7CgkgICBlbHNlIGlmKHNbaV09PSc/JyYmc1tzei1pLTFdPT0nMScmJm0+MCltLS0sc1tpXT0nMSc7IAoJfSAgCgkKCWZvcihpbnQgaT0wO2k8c3o7aSsrKXsKCSAgIGlmKGk9PXNbc3otaS0xXSljb250aW51ZTsgCgkgICBlbHNlIGlmKHNbaV09PSc/JyYmc1tzei1pLTFdPT0nPycmJm4+MSluLT0yLHNbc3otaS0xXT0nMCcsc1tpXT0nMCc7CgkgICBlbHNlIGlmKHNbaV09PSc/JyYmc1tzei1pLTFdPT0nPycmJm0+MSltLT0yLHNbc3otaS0xXT0nMScsc1tpXT0nMSc7Cgl9CgkKCWlmKHNbc3ovMl09PSc/Jyl7aWYobj4wKXNbc3ovMl09JzAnO2Vsc2UgaWYobT4wKXNbc3ovMl09JzEnO30gCglpbnQgY291blsyXT17MH07IAoKCWZvcihpbnQgaT1zei0xO2k+PTA7aS0tKXsKCQlzcys9c1tpXTsKCQlpZihzW2ldIT0nPycpCgkgICAgY291bltzW2ldLTQ4XSsrOyAKCX0gCglpZihzPT1zcyYmY291blswXT09eiYmY291blsxXT09byljb3V0PDxzPDxlbmRsOyAKCWVsc2UgY291dDw8LTE8PGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==