#include <iostream>
#include<bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define endl "\n"
#define vi vector<int>
#define vii vector<pair<int,int>>
#define pb push_back
using namespace std;
using ll = long long;
const ll mod = 1e9+7;
ll fac[1000001];
void pre(){
fac[0]=fac[1]=1;
for(int i=2;i<=1000001;i++)
{
fac[i]=(fac[i-1]*1LL*i)%mod;
}
}
ll binpower(ll a,ll n){
ll res=1;
while(n){
if(n%2)
res = (res*1LL*a)%mod;
n/=2;
a=(a*1LL*a)%mod;
}
return res;
}
ll nCrmod(ll n,ll r){
ll res= fac[n];
res = (res*1LL*binpower(fac[r],mod-2))%mod;
res= (res*1LL*binpower(fac[n-r],mod-2))%mod;
return res;
}
long long ncr(int n, int r) {
if(r > n - r) r = n - r; // because C(n, r) == C(n, n - r)
long long ans = 1;
int i;
for(i = 1; i <= r; i++) {
ans *= n - r + i;
ans /= i;
}
return ans;
}
ll modexp(ll a,ll b,ll m){
if(b==0)return 1;
if(b%2==0){
ll y = modexp(a,b/2,m);
return (y*y)%m;
}
else{
return ((a%m)*modexp(a,b-1,m))%m;
}
}
ll modinv(ll a,ll m){
return modexp(a,m-2,m);
//works only for prime m.
//else calculate phi(m)-1.
}
void SieveOfEratosthenes(ll n)
{
// Create a boolean array "prime[0..n]" and initialize
// all entries it as true. A value in prime[i] will
// finally be false if i is Not a prime, else true.
bool prime[n+1];
memset(prime, true, sizeof(prime));
for (ll p=2; p*p<=n; p++)
{
// If prime[p] is not changed, then it is a prime
if (prime[p] == true)
{
// Update all multiples of p greater than or
// equal to the square of it
// numbers which are multiple of p and are
// less than p^2 are already been marked.
for (ll i=p*p; i<=n; i += p)
prime[i] = false;
}
}
// Print all prime numbers
for (ll p=2; p<=n; p++)
if (prime[p])
cout << p << " ";
}
vector<int> Centroid(vector<int>g[],int n) {
vector<int> centroid;
vector<int> sz(n+1);
function<void (int, int)> dfs = [&](int u, int prev) {
sz[u] = 1;
bool is_centroid = true;
for (auto v : g[u]) if (v != prev) {
dfs(v, u);
sz[u] += sz[v];
if (sz[v] > n / 2) is_centroid = false;
}
if (n - sz[u] > n / 2) is_centroid = false;
if (is_centroid) centroid.push_back(u);
};
dfs(1, 0);
return centroid;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin>>t;
while(t--){
int a,b;
cin>>a>>b;
string s;
cin>>s;
int n=s.size();
bool ok=1;
for(int i=0;i<n;i++){
if(s[i]=='1'){
if(s[n-i-1]=='0')ok=0;
else s[n-i-1]='1';
}
else if(s[i]=='0'){
if(s[n-i-1]=='1')ok=0;
else s[n-i-1]='0';
}
}
int o=0,z=0;
for(int i=0;i<n;i++){
if(s[i]=='1')o++;
else if(s[i]=='1')z++;
}
if(z>a)ok=0;
if(o>b)ok=0;
cout<<z<<" "<<o<<endl;
int oleft=b-o;
int zleft=a-z;
for(int i=0;i<n;i++){
if(i==n-i-1&&s[i]=='?'){
// cout<<oleft<<" "<<zleft<<endl;
if(oleft%2==1)s[i]='1',oleft--;
else if(zleft%2==1)s[i]='0',zleft--;
else ok=0;
}
else{
if(s[i]=='?'){
if(oleft>=2){
oleft-=2;
s[i]='1';
s[n-i-1]='1';
}
else if(zleft>=2){
zleft-=2;
s[i]='0';
s[n-i-1]='0';
}
else ok=0;
}
}
}
int f=0,g=0;
for(int i=0;i<n;i++){
if(s[i]=='0')f++;
else if(s[i]=='1')g++;
}
if(f!=a||g!=b)ok=0;
if(!ok)cout<<-1<<endl;
else cout<<s<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgojZGVmaW5lIGFsbCh4KSAoeCkuYmVnaW4oKSwgKHgpLmVuZCgpCiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgdmkgdmVjdG9yPGludD4KI2RlZmluZSB2aWkgdmVjdG9yPHBhaXI8aW50LGludD4+CiNkZWZpbmUgcGIgcHVzaF9iYWNrCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwpjb25zdCBsbCBtb2QgPSAxZTkrNzsKCmxsIGZhY1sxMDAwMDAxXTsKCnZvaWQgcHJlKCl7CiAgICBmYWNbMF09ZmFjWzFdPTE7CiAgICBmb3IoaW50IGk9MjtpPD0xMDAwMDAxO2krKykKewoKICAgIGZhY1tpXT0oZmFjW2ktMV0qMUxMKmkpJW1vZDsKfQp9CgpsbCBiaW5wb3dlcihsbCBhLGxsIG4pewogICAgbGwgcmVzPTE7CiAgICB3aGlsZShuKXsKCiAgICBpZihuJTIpCiAgICAgICAgcmVzID0gKHJlcyoxTEwqYSklbW9kOwoKICAgICAgICBuLz0yOwogICAgICAgIGE9KGEqMUxMKmEpJW1vZDsKCiAgICB9CiAgICByZXR1cm4gcmVzOwoKfQoKbGwgbkNybW9kKGxsIG4sbGwgcil7CgoKbGwgcmVzPSBmYWNbbl07CnJlcyA9IChyZXMqMUxMKmJpbnBvd2VyKGZhY1tyXSxtb2QtMikpJW1vZDsKcmVzPSAocmVzKjFMTCpiaW5wb3dlcihmYWNbbi1yXSxtb2QtMikpJW1vZDsKcmV0dXJuIHJlczsKCn0KCmxvbmcgbG9uZyBuY3IoaW50IG4sIGludCByKSB7CiAgICBpZihyID4gbiAtIHIpIHIgPSBuIC0gcjsgLy8gYmVjYXVzZSBDKG4sIHIpID09IEMobiwgbiAtIHIpCiAgICBsb25nIGxvbmcgYW5zID0gMTsKICAgIGludCBpOwoKICAgIGZvcihpID0gMTsgaSA8PSByOyBpKyspIHsKICAgICAgICBhbnMgKj0gbiAtIHIgKyBpOwogICAgICAgIGFucyAvPSBpOwogICAgfQoKICAgIHJldHVybiBhbnM7Cn0KbGwgbW9kZXhwKGxsIGEsbGwgYixsbCBtKXsKICAgIGlmKGI9PTApcmV0dXJuIDE7CiAgICBpZihiJTI9PTApewogICAgICAgIGxsIHkgPSAgbW9kZXhwKGEsYi8yLG0pOwogICAgICAgIHJldHVybiAoeSp5KSVtOwogICAgfQogICAgZWxzZXsKICAgICAgICByZXR1cm4gKChhJW0pKm1vZGV4cChhLGItMSxtKSklbTsKICAgIH0KfQoKbGwgbW9kaW52KGxsIGEsbGwgbSl7CnJldHVybiBtb2RleHAoYSxtLTIsbSk7Ci8vd29ya3Mgb25seSBmb3IgcHJpbWUgbS4KLy9lbHNlIGNhbGN1bGF0ZSBwaGkobSktMS4KfQoKdm9pZCBTaWV2ZU9mRXJhdG9zdGhlbmVzKGxsIG4pCnsKICAgIC8vIENyZWF0ZSBhIGJvb2xlYW4gYXJyYXkgInByaW1lWzAuLm5dIiBhbmQgaW5pdGlhbGl6ZQogICAgLy8gYWxsIGVudHJpZXMgaXQgYXMgdHJ1ZS4gQSB2YWx1ZSBpbiBwcmltZVtpXSB3aWxsCiAgICAvLyBmaW5hbGx5IGJlIGZhbHNlIGlmIGkgaXMgTm90IGEgcHJpbWUsIGVsc2UgdHJ1ZS4KICAgIGJvb2wgcHJpbWVbbisxXTsKICAgIG1lbXNldChwcmltZSwgdHJ1ZSwgc2l6ZW9mKHByaW1lKSk7CgogICAgZm9yIChsbCBwPTI7IHAqcDw9bjsgcCsrKQogICAgewogICAgICAgIC8vIElmIHByaW1lW3BdIGlzIG5vdCBjaGFuZ2VkLCB0aGVuIGl0IGlzIGEgcHJpbWUKICAgICAgICBpZiAocHJpbWVbcF0gPT0gdHJ1ZSkKICAgICAgICB7CiAgICAgICAgICAgIC8vIFVwZGF0ZSBhbGwgbXVsdGlwbGVzIG9mIHAgZ3JlYXRlciB0aGFuIG9yCiAgICAgICAgICAgIC8vIGVxdWFsIHRvIHRoZSBzcXVhcmUgb2YgaXQKICAgICAgICAgICAgLy8gbnVtYmVycyB3aGljaCBhcmUgbXVsdGlwbGUgb2YgcCBhbmQgYXJlCiAgICAgICAgICAgIC8vIGxlc3MgdGhhbiBwXjIgYXJlIGFscmVhZHkgYmVlbiBtYXJrZWQuCiAgICAgICAgICAgIGZvciAobGwgaT1wKnA7IGk8PW47IGkgKz0gcCkKICAgICAgICAgICAgICAgIHByaW1lW2ldID0gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIC8vIFByaW50IGFsbCBwcmltZSBudW1iZXJzCiAgICBmb3IgKGxsIHA9MjsgcDw9bjsgcCsrKQogICAgICAgaWYgKHByaW1lW3BdKQogICAgICAgICAgY291dCA8PCBwIDw8ICIgIjsKfQoKdmVjdG9yPGludD4gQ2VudHJvaWQodmVjdG9yPGludD5nW10saW50IG4pIHsKCiAgICAgICAgdmVjdG9yPGludD4gY2VudHJvaWQ7CiAgICAgICAgdmVjdG9yPGludD4gc3oobisxKTsKICAgICAgICBmdW5jdGlvbjx2b2lkIChpbnQsIGludCk+IGRmcyA9IFsmXShpbnQgdSwgaW50IHByZXYpIHsKICAgICAgICAgICAgICAgIHN6W3VdID0gMTsKICAgICAgICAgICAgICAgIGJvb2wgaXNfY2VudHJvaWQgPSB0cnVlOwogICAgICAgICAgICAgICAgZm9yIChhdXRvIHYgOiBnW3VdKSBpZiAodiAhPSBwcmV2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRmcyh2LCB1KTsKICAgICAgICAgICAgICAgICAgICAgICAgc3pbdV0gKz0gc3pbdl07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzelt2XSA+IG4gLyAyKSBpc19jZW50cm9pZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG4gLSBzelt1XSA+IG4gLyAyKSBpc19jZW50cm9pZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgaWYgKGlzX2NlbnRyb2lkKSBjZW50cm9pZC5wdXNoX2JhY2sodSk7CiAgICAgICAgfTsKICAgICAgICBkZnMoMSwgMCk7CiAgICAgICAgcmV0dXJuIGNlbnRyb2lkOwp9CgoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICBpbnQgdDsKICAgIGNpbj4+dDsKICAgIHdoaWxlKHQtLSl7CiAgICAgICAgaW50IGEsYjsKICAgICAgICBjaW4+PmE+PmI7CiAgICAgICAgc3RyaW5nIHM7CiAgICAgICAgY2luPj5zOwogICAgICAgIGludCBuPXMuc2l6ZSgpOwogICAgICAgIGJvb2wgb2s9MTsKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICAgICAgaWYoc1tpXT09JzEnKXsKICAgICAgICAgICAgICAgIGlmKHNbbi1pLTFdPT0nMCcpb2s9MDsKICAgICAgICAgICAgICAgIGVsc2Ugc1tuLWktMV09JzEnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoc1tpXT09JzAnKXsKICAgICAgICAgICAgICAgICBpZihzW24taS0xXT09JzEnKW9rPTA7CiAgICAgICAgICAgICAgICBlbHNlIHNbbi1pLTFdPScwJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpbnQgbz0wLHo9MDsKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICAgICAgaWYoc1tpXT09JzEnKW8rKzsKICAgICAgICAgICAgZWxzZSBpZihzW2ldPT0nMScpeisrOwogICAgICAgIH0KICAgICAgICBpZih6PmEpb2s9MDsKICAgICAgICBpZihvPmIpb2s9MDsKICAgICAgICBjb3V0PDx6PDwiICI8PG88PGVuZGw7CiAgICAgICAgaW50IG9sZWZ0PWItbzsKICAgICAgICBpbnQgemxlZnQ9YS16OwoKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICAgICAgaWYoaT09bi1pLTEmJnNbaV09PSc/Jyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgY291dDw8b2xlZnQ8PCIgIjw8emxlZnQ8PGVuZGw7CiAgICAgICAgICAgICAgICBpZihvbGVmdCUyPT0xKXNbaV09JzEnLG9sZWZ0LS07CiAgICAgICAgICAgICAgICBlbHNlIGlmKHpsZWZ0JTI9PTEpc1tpXT0nMCcsemxlZnQtLTsKICAgICAgICAgICAgICAgIGVsc2Ugb2s9MDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgaWYoc1tpXT09Jz8nKXsKICAgICAgICAgICAgICAgICAgICBpZihvbGVmdD49Mil7CiAgICAgICAgICAgICAgICAgICAgICAgIG9sZWZ0LT0yOwogICAgICAgICAgICAgICAgICAgICAgICBzW2ldPScxJzsKICAgICAgICAgICAgICAgICAgICAgICAgc1tuLWktMV09JzEnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHpsZWZ0Pj0yKXsKICAgICAgICAgICAgICAgICAgICAgIHpsZWZ0LT0yOwogICAgICAgICAgICAgICAgICAgICAgICBzW2ldPScwJzsKICAgICAgICAgICAgICAgICAgICAgICAgc1tuLWktMV09JzAnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIG9rPTA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaW50IGY9MCxnPTA7CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgICBpZihzW2ldPT0nMCcpZisrOwogICAgICAgICAgZWxzZSBpZihzW2ldPT0nMScpZysrOwoKICAgICAgICB9CiAgICAgICAgaWYoZiE9YXx8ZyE9Yilvaz0wOwogICAgICAgIGlmKCFvayljb3V0PDwtMTw8ZW5kbDsKICAgICAgICBlbHNlIGNvdXQ8PHM8PGVuZGw7CgogICAgfQoKCiAgICByZXR1cm4gMDsKfQo=