CF1400C Binary String Reconstruction
Description
Consider the following process. You have a binary string (a string where each character is either 0 or 1) $ w $ of length $ n $ and an integer $ x $ . You build a new binary string $ s $ consisting of $ n $ characters. The $ i $ -th character of $ s $ is chosen as follows:
- if the character $ w_{i-x} $ exists and is equal to 1, then $ s_i $ is 1 (formally, if $ i > x $ and $ w_{i-x} = $ 1, then $ s_i = $ 1);
- if the character $ w_{i+x} $ exists and is equal to 1, then $ s_i $ is 1 (formally, if $ i + x \le n $ and $ w_{i+x} = $ 1, then $ s_i = $ 1);
- if both of the aforementioned conditions are false, then $ s_i $ is 0.
You are given the integer $ x $ and the resulting string $ s $ . Reconstruct the original string $ w $ .
Input Format
The first line contains one integer $ t $ ( $ 1 \le t \le 1000 $ ) — the number of test cases.
Each test case consists of two lines. The first line contains the resulting string $ s $ ( $ 2 \le |s| \le 10^5 $ , each character of $ s $ is either 0 or 1). The second line contains one integer $ x $ ( $ 1 \le x \le |s| - 1 $ ).
The total length of all strings $ s $ in the input does not exceed $ 10^5 $ .
Output Format
For each test case, print the answer on a separate line as follows:
- if no string $ w $ can produce the string $ s $ at the end of the process, print $ -1 $ ;
- otherwise, print the binary string $ w $ consisting of $ |s| $ characters. If there are multiple answers, print any of them.