AT_ajo2025_final_a Finding (((...)))
Description
整数 $ N,K $ が与えられます.
`(`,`)` からなる正しい括弧列 $ s $ に対し,そのスコアを次のように定義します.
- $ ( $ `(` $ \times c )+ ( $ `)` $ \times c) $ という形の文字列 (`()`, `(())`, `((()))`, etc...) を**よい文字列**と呼ぶことにする. $ s $ に(連続するとは限らない)部分列として含まれるよい文字列の長さの最大値を, $ s $ のスコアとする.
長さ $ 2N $ の正しい括弧列であって,スコアがちょうど $ 2K $ になるものの個数を $ 998244353 $ で割ったあまりを求めてください.
$ 1 $ つの入力につき, $ T $ 個のテストケースを解いてください.
正しい括弧列とは正しい括弧列とは、`()` である部分文字列を削除することを $ 0 $ 回以上繰り返して空文字列にできる文字列を指します。
Input Format
入力は以下の形式で標準入力から与えられる.
> $ T $ $ case_1 $ $ case_2 $ $ \vdots $ $ case_T $
各テストケースは以下の形式で与えられる.
> $ N $ $ K $
Output Format
答えを出力せよ.
Explanation/Hint
### Sample Explanation 1
長さ $ 4 $ の正しい括弧列と,そのスコアは以下のとおりです.
- `()()`: スコア $ 2 $
- `(())`: スコア $ 4 $
### Constraints
- $ 1 \leq T \leq 10^5 $
- $ 1 \leq K \leq N \leq 10^6 $
- 入力はすべて整数