AT_scpc2026_div1_g 오fill

Description

#### 表示言語 / / セニックスは、以下の6種類の正方形タイルを使って、 $ N \times M $ サイズの格子盤を埋めようとしている。各タイルは十分にあり、回転させて配置することができる。タイルを配置する際は、道が接続されたすべての辺が、隣接するタイルの道が接続された辺と接していなければならない。すべての道が一つにつながっている必要はない。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_scpc2026_div1_g/0a34bd7e0d2962d1ca9d7804c38ca265014bfd0e5ec0c8f85ab14f7860039902.png) セニックスは格子盤を埋めているうちに、格子盤を埋めるのがあまりにも簡単だと感じた。セニックスは、残りのマスを一辺のみをつなぐタイルと三辺をつなぐタイルのみを利用してすべて埋めようとしている。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_scpc2026_div1_g/cbdd684bab8b5dccf1cb6344a5f0d43829201c43d6babf066c9235a44320d24d.png) 一部のマスをタイルで埋めた格子盤が以下のように与えられる。 - 格子盤の上から数えて $ i $ 番目、左から数えて $ j $ 番目のマスに置かれたタイルの種類は $ A_{i,j} $ である。 - 該当するマスにタイルが置かれていない場合、 $ A_{i,j} $ は $ -1 $ である。 - 該当するマスにタイルが置かれている場合、 $ A_{i,j} $ はそのタイルの上辺に道が接続されている場合は $ 1 $ 、下辺に道が接続されている場合は $ 2 $ 、左辺に道が接続されている場合は $ 4 $ 、右辺に道が接続されている場合は $ 8 $ をすべて足した値である。 残りのマスを2種類のタイルで全て埋める方法の数を求めよ。

Input Format

入力は以下の形式で標準入力から与えられる. > $ N $ $ M $ $ A_{1,1} $ $ A_{1,2} $ $ \dots $ $ A_{1,M} $ $ A_{2,1} $ $ A_{2,2} $ $ \dots $ $ A_{2,M} $ $ \vdots $ $ A_{N,1} $ $ A_{N,2} $ $ \dots $ $ A_{N,M} $

Output Format

格子盤を埋める方法の数を $ 998\,244\,353 $ で割った余りを出力する。

Explanation/Hint

### Sample Explanation 1 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_scpc2026_div1_g/7603ad36b6a2334c48decf7e06691cbb74f8eba9c5924b952bbc1c2bd53e3bc2.png) ### Constraints - $ 1 \le N, M \le 500\,000 $ - $ 1 \le NM \le 500\,000 $ - $ -1 \le A_{i,j} \le 15 $ - 入力される値はすべて整数