AT_utpc2023_c Contour Multiplication

Description

長さ $ 2^N $ の数列 $ (A_0, A_1, \dots, A_{2^N-1}) $ があります。最初、 $ A_0=A_1=\dots=A_{2^N-1}=1 $ です。 $ K $ 回の操作を行います。 $ i $ 回目の操作では、 $ \text{popcount}(j \oplus C_i) = D_i $ であるような各 $ j \ (0 \leq j < 2^N) $ について、 $ A_j $ を $ (A_j \times X_i)\bmod M $ で置き換えます。 操作をすべて行った後の $ A_0, A_1, \dots, A_{2^N-1} $ をそれぞれ求めてください。 $ \mathrm{popcount} $ とは非負整数 $ X $ に対して $ \text{popcount}(X) $ とは $ X $ を $ 2 $ 進表記したときの $ 1 $ の個数、すなわち $ 2^k $ の位が $ 1 $ となる非負整数 $ k $ の個数のことです。 ビット単位 $ \mathrm{XOR} $ 演算 $ \oplus $ とは 非負整数 $ A, B $ のビット単位 $ \mathrm{XOR} $ 、 $ A \oplus B $ は、以下のように定義されます。 - $ A \oplus B $ を $ 2 $ 進表記した際の $ 2^k $ $ (k \geq 0) $ の位の数は、 $ A, B $ を $ 2 $ 進表記した際の $ 2^k $ の位の数のうち一方のみが $ 1 $ であれば $ 1 $ 、そうでなければ $ 0 $ である。 例えば、 $ 3 \oplus 5 = 6 $ となります( $ 2 $ 進表記すると $ 011 \oplus 101 = 110 $ )。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ M $ $ K $ $ C_1 $ $ D_1 $ $ X_1 $ $ C_2 $ $ D_2 $ $ X_2 $ $ \vdots $ $ C_K $ $ D_K $ $ X_K $

Output Format

$ A_0, A_1, \dots, A_{2^N-1} $ を空白区切りで $ 1 $ 行に出力せよ。

Explanation/Hint

### Sample Explanation 1 $ 1 $ 回目の操作では、 $ A_3,A_5,A_6 $ が $ 1\times 4\bmod 100=4 $ になります。 $ 2 $ 回目の操作では、 $ A_3 $ が $ 4\times 25 \bmod 100=0 $ になります。 ### Constraints - 入力は全て整数 - $ 1 \leq N \leq 18 $ - $ 2 \leq M \leq 10^9 $ - $ 1 \leq K \leq 5 \times 10^5 $ - $ 0 \leq C_i < 2^N $ - $ 0 \leq D_i \leq N $ - $ 2 \leq X_i \leq 10^9 $