#P9566. [SDCPC 2023] Difficult Constructive Problem

[SDCPC 2023] Difficult Constructive Problem

Description

给定一个长度为 nn 的字符串 s1s2sns_1s_2\cdots s_n,其中 si{0,1,?}s_i \in \{\text{0}, \text{1}, \text{?}\},另外给定一个整数 kk,请将字符串中所有的 ?\text{?} 换成 0\text{0}1\text{1},使得满足 1i<n1 \le i < nsisi+1s_i \ne s_{i+1} 的下标 ii 恰有 kk 个。不同的 ?\text{?} 可以用不同字符替换。

为了让这题变得更加困难,我们要求您在答案存在的情况下,输出字典序最小的答案。

请回忆:称长度为 nn 的字符串 a1a2ana_1a_2\cdots a_n 的字典序小于长度为 nn 的字符串 b1b2bnb_1b_2\cdots b_n,若存在一个整数 kk1kn1 \le k \le n)使得对于所有 1i<k1 \le i < kai=bia_i = b_i,且 ak<bka_k < b_k

Input Format

有多组测试数据。第一行输入一个整数 TT 表示测试数据组数,对于每组测试数据:

第一行输入两个整数 nnkk1n1051 \le n \le 10^50k<n0 \le k < n)表示字符串的长度以及满足要求的下标数量。

第二行输入一个字符串 s1s2,sns_1s_2,\cdots s_nsi{0,1,?}s_i \in \{\text{0}, \text{1}, \text{?}\})。

保证所有数据 nn 之和不超过 10610^6

Output Format

每组数据输出一行。若答案存在则输出字典序最小的答案(您需要输出将 ?\text{?} 替换之后的整个字符串,并让这个字符串的字典序最小),否则输出 Impossible

5
9 6
1?010??01
9 5
1?010??01
9 6
100101101
9 5
100101101
9 3
????????1

100100101
Impossible
100101101
Impossible
000000101