#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
int n, i;
cin>>n;
for(i=0;i<n;i++)
{
int a, b, c, j, k, p, q, its, ims, d;
cin>>a>>b;
its=a;
ims=b;
char num[a+b+6];
getchar();
gets(num);
p=0;
d=0;
if(a%2!=0&&b%2!=0)
{
cout<<"-1"<<endl;
d=1;
}
else
{
for(j=0;j<(a+b)/2;j++)
{
if(num[j]=='?')
num[j]=num[a+b-j-1];
else if(num[a+b-j-1]=='?')
num[a+b-j-1]=num[j];
else if(num[j]!=num[a+b-j-1])
{
p=1;
break;
}
}
}
for(j=0;j<a+b;j++)
{
if(num[j]=='0')
its--;
if(num[j]=='1')
ims--;
}
if(d==0)
{
if(its<0||ims<0)
cout<<"-1"<<endl;
else if(p==1)
cout<<"-1"<<endl;
else
{
int t,kl;
kl=0;
t=(a+b)/2;
if(a%2!=0)
{
if(num[t]=='?')
its--;
if(num[t]=='1')
{
cout<<"-1"<<endl;
kl=1;
}
else
num[t]='0';
}
else if(b%2!=0)
{
if(num[t]=='?')
ims--;
if(num[t]=='0')
{
cout<<"-1"<<endl;
kl=1;
}
else
num[t]='1';
}
if(kl==0)
{
for(j=0;j<(a+b)/2;j++)
{
if(num[j]=='?'&&its>0)
{
num[j]='0';
num[a+b-j-1]='0';
its-=2;
}
else if(num[j]=='?'&&ims>0)
{
num[j]='1';
num[a+b-j-1]='1';
ims-=2;
}
}
puts(num);
}
}
}
}
return 0;
}