CF1512C A-B Palindrome
Description
You are given a string $ s $ consisting of the characters '0', '1', and '?'. You need to replace all the characters with '?' in the string $ s $ by '0' or '1' so that the string becomes a palindrome and has exactly $ a $ characters '0' and exactly $ b $ characters '1'. Note that each of the characters '?' is replaced independently from the others.
A string $ t $ of length $ n $ is called a palindrome if the equality $ t[i] = t[n-i+1] $ is true for all $ i $ ( $ 1 \le i \le n $ ).
For example, if $ s= $ "01?????0", $ a=4 $ and $ b=4 $ , then you can replace the characters '?' in the following ways:
- "01011010";
- "01100110".
For the given string $ s $ and the numbers $ a $ and $ b $ , replace all the characters with '?' in the string $ s $ by '0' or '1' so that the string becomes a palindrome and has exactly $ a $ characters '0' and exactly $ b $ characters '1'.
Input Format
The first line contains a single integer $ t $ ( $ 1 \le t \le 10^4 $ ). Then $ t $ test cases follow.
The first line of each test case contains two integers $ a $ and $ b $ ( $ 0 \le a, b \le 2 \cdot 10^5 $ , $ a + b \ge 1 $ ).
The second line of each test case contains the string $ s $ of length $ a+b $ , consisting of the characters '0', '1', and '?'.
It is guaranteed that the sum of the string lengths of $ s $ over all test cases does not exceed $ 2 \cdot 10^5 $ .
Output Format
For each test case, output:
- "-1", if you can't replace all the characters '?' in the string $ s $ by '0' or '1' so that the string becomes a palindrome and that it contains exactly $ a $ characters '0' and exactly $ b $ characters '1';
- the string that is obtained as a result of the replacement, otherwise.
If there are several suitable ways to replace characters, you can output any.