AT_KeioPC2025_o Three Constraints

Description

非負整数 $ x, y, z $ に対し、 以下の条件をすべて満たす非負整数の組 $ (a,b,c) $ の個数を $ f(x, y, z) $ と定めます。 - $ a \ \mathrm{AND} \ b \ \mathrm{AND} \ c = x $ - $ a \ \mathrm{OR} \ b \ \mathrm{OR} \ c = y $ - $ a + b + c = z $ ここで $ a \ \mathrm{AND} \ b $ は $ a $ と $ b $ のビットごとの論理積を表し、 $ a \ \mathrm{OR} \ b $ は $ a $ と $ b $ のビットごとの論理和を表します。 正整数 $ N, M $ と、 `0`, `1`, `?` からなる長さ $ N $ の文字列 $ X,Y,Z $ が与えられます。 $ X $ の `?` を `0` または `1` に置き換えて得られる文字列を $ 2 $ 進数の整数と解釈したものとしてあり得る整数全体の集合を $ S_X $ とおきます。 $ Y $ に対する $ S_Y $ 、 $ Z $ に対する $ S_Z $ も同様に定義します。 $ k = 0, 1, \ldots, M-1 $ について、以下の問題を解いてください。 - $ x \in S_X, y \in S_Y, z \in S_Z $ を満たす整数の $ 3 $ つ組 $ (x, y, z) $ であって、 $ f(x, y, z) \equiv k \pmod{M} $ を満たすものが存在するか判定せよ。 $ T $ 個のテストケースが与えられるので、それぞれについて解いてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ T $ $ \mathrm{case}_1 $ $ \mathrm{case}_2 $ $ \vdots $ $ \mathrm{case}_T $ 各テストケースは以下の形式で与えられる。 > $ N\ M $ $ X $ $ Y $ $ Z $

Output Format

$ T $ 行出力せよ。 $ i $ 行目には $ \mathrm{case}_i $ について、 $ k = 0, 1, \ldots, M-1 $ の順に $ f(x, y, z) \equiv k \pmod{M} $ なる $ (x,y,z) $ が存在するならば `1` 、そうでないならば `0` を出力せよ。

Explanation/Hint

### Sample Explanation 1 $ 1 $ 番目のテストケースについて、 $ S_x = \lbrace 1,3 \rbrace , S_y = \lbrace 1,5 \rbrace , S_z = \lbrace 3,7 \rbrace $ になります。 $ k = 0,1,3 $ について、 - $ f(3, 1, 3) \equiv 0 \pmod{M} $ : 条件を満たす $ (a,b,c) $ の組は存在しません。 - $ f(1, 1, 3) \equiv 1 \pmod{M} $ : 条件を満たす $ (a,b,c) $ は $ (1,1,1) $ の $ 1 $ つです。 - $ f(1, 5, 7) \equiv 3 \pmod{M} $ : 条件を満たす $ (a,b,c) $ は $ (1,1,5) , (1,5,1) , (5,1,1) $ の $ 3 $ つです。 のように条件を満たす $ (x,y,z) $ が存在することがわかります。 一方、 $ k = 2,4 $ について条件を満たすような $ (x,y,z) $ は存在しません。 ### Constraints - $ 1 \leq T \leq 3000 $ - $ 1 \leq N \leq 3000 $ - $ 1 \leq M \leq 10^6 $ - $ X, Y, Z $ は `0`, `1` , `?` からなる長さ $ N $ の文字列 - すべてのテストケースにおける $ N $ の総和は $ {3000} $ 以下 - すべてのテストケースにおける $ M $ の総和は $ 10^6 $ 以下 - $ N,M $ は整数