#include<bits/stdc++.h>
#define int long long
using namespace std;
int t, a, b;
string s;
signed main()
{
for(cin>>t;t;t--)
{
int n;
cin>>a>>b;
n=a+b;
cin>>s;
s=" "+s;
if(n==1&&s[1]=='?')
{
if(a==1)
{
cout<<"0\n";
}
else
{
cout<<"1\n";
}
continue;
}
else if(n==1)
{
if(s[1]=='1'&&b==1)
{
cout<<"1\n";
}
else if(s[1]=='0'&&a==1)
{
cout<<"0\n";
}
else
{
cout<<"-1\n";
}
continue;
}
for(int i=1;i<=n;i++)
{
if(s[i]=='1')
{
b--;
}
if(s[i]=='0')
{
a--;
}
}
bool f=1;
for(int i=1;i<=n;i++)
{
if(s[i]=='?'&&s[n-i+1]=='?')
{
continue;
}
if(s[i]=='?')
{
s[i]=s[n-i+1];
if(s[i]=='1')
{
b--;
}
else
{
a--;
}
if(b<0||a<0)
{
f=0;
break;
}
}
}
if(!f)
{
cout<<"-1\n";
continue;
}
for(int i=1;i<=n;i++)
{
if(s[i]=='?')
{
if(i==n-i+1)
{
if(a>=1)
{
a-=1;
s[i]='0';
}
else if(b>=1)
{
b-=1;
s[i]='1';
}
else
{
f=0;
break;
}
continue;
}
if(a>=2)
{
a-=2;
s[i]=s[n-i+1]='0';
}
else if(b>=2)
{
b-=2;
s[i]=s[n-i+1]='1';
}
else
{
f=0;
break;
}
}
}
if(!f)
{
cout<<"-1\n";
continue;
}
for(int i=1;i<=n;i++)
{
if(s[i]!=s[n-i+1])
{
f=0;
break;
}
}
if(!f)
{
cout<<"-1\n";
continue;
}
for(int i=1;i<=n;i++)
{
cout<<s[i];
}
cout<<"\n";
}
}
第二个点挂了