AT_npcapc_2024_g Many Common Segment Problems

Description

PCT 君は以下のような問題を作りました。 > **Common Segment** > > $ N $ 個の区間 $ [L_1,R_1],[L_2,R_2],\dots,[L_N,R_N] $ が与えられます。ここで $ [L, R] $ は $ L $ 以上 $ R $ 以下の全ての整数からなる区間を意味します。 > > ここから $ 1 $ 個以上の区間を選ぶ方法は $ 2^N-1 $ 通りありますが、そのうち選んだ全ての区間の共通部分が空でないものの個数を $ 998244353 $ で割ったあまりを求めてください。 PCT 君は間違えてテストケースの $ L_i,R_i $ のうち一部の値をなくしてしまいました。困った彼のために以下の問題を解いてください。 > **Many Common Segment Testcases** > > **Common Segment** のテストケースが与えられます。ただし、なくしてしまった $ L_i,R_i $ の値は代わりに `-1` が与えられます。 > > このとき、元のテストケースは $ 1 \le L_i \le R_i \le M\ (1 \le i \le N) $ を満たしていたとのことです。元のテストケースとしてあり得るもの全てに対して **Common Segment** を解き、答えの総和を $ 998244353 $ で割ったあまりを求めてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ M $ $ L_1 $ $ R_1 $ $ L_2 $ $ R_2 $ $ \vdots $ $ L_N $ $ R_N $

Output Format

答えを出力せよ。

Explanation/Hint

### 部分点 この問題には複数の部分点が設定されている。 - $ L_i,R_i \ge 1 $ を満たすデータセットに正解した場合 $ 10 $ 点が与えられる。 - $ N,M \le 2000 $ を満たすデータセットに正解した場合 $ 10 $ 点が与えられる。 ### Sample Explanation 1 テストケースとしてあり得るもの全てとそのテストケースに対する **Common Segment** の答えは以下の通りです。 - $ (L_i,R_i) = (1,1),(2,2),(2,3) $ のとき、 $ 4 $ 通り - $ (L_i,R_i) = (1,2),(2,2),(2,3) $ のとき、 $ 7 $ 通り - $ (L_i,R_i) = (1,3),(2,2),(2,3) $ のとき、 $ 7 $ 通り よって、答えは $ 4 + 7 + 7 = 18 $ となります。 ### Constraints - $ 1 \le N,M \le 10^5 $ - $ L_i = -1 $ または $ 1 \le L_i \le M $ - $ R_i = -1 $ または $ 1 \le R_i \le M $ - $ L_i,R_i \ge 1 $ ならば $ L_i \le R_i $