#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
using namespace std;
 char s[1000000];int r[1000000],l[1000000];
int main()
{
  int t;
  scanf("%d",&t);
  while(t--)
  {
      int j,a,b,i,n,w=0;
      int c=0,d=0;

      scanf("%d%d",&a,&b);
      getchar();
      n=a+b;
  for(i=0;i<n;i++)
   {
       scanf("%c",&s[i]);
       if(s[i]=='0'){r[c]=i;c++;}
       if(s[i]=='1'){l[d]=i;d++;}
   }
w=n-c-d;int A=a-c,B=b-d;
if((a%2&&b%2)||(c>a)||(d>b))
printf("-1\n");
else
if(a==0){
        for(i=0;i<b;i++)
    printf("1");
    printf("\n");
}
else
if(b==0){for(i=0;i<a;i++)
    printf("0");
    printf("\n");
}
else {
        for(i=0;i<c;i++)
    {
        if(s[n-1-r[i]]=='?'){
            s[n-1-r[i]]='0';w--;A--;
        }
        else
                if(s[n-1-r[i]]=='1'){break;
                }

    }
    for(j=0;j<d;j++)
    {
        if(s[n-1-l[j]]=='?'){
            s[n-1-l[j]]='1';w--;B--;
        }
        else
                if(s[n-1-l[j]]=='0'){break;
                }

    }
    if((A<0||B<0)||i<c||j<d||(w!=A+B))printf("-1\n");
    else {

            for(i=0;i<=n/2-1;i++)
            {
                if(s[i]=='?')
                {
                    if(A>=2){s[i]='0';s[n-1-i]='0';
                    A-=2;
                    }
                    else {
                        s[i]='1';s[n-1-i]='1';
                        B-=2;
                    }

                }
            }if(A<0||B<0)printf("-1\n");
            else{
            if(s[i]=='?'){
         if(A){s[i]='0';s[n-1-i]='0';
                    A-=2;
                    }
                    else {
                        s[i]='1';s[n-1-i]='1';
                        B-=2;
                    }
            }
             for(i=0;i<n;i++)
             printf("%c",s[i]);
             printf("\n");
                }}


            }

}

}
