#ATarc166c. [ARC166C] LU / RD Marking

[ARC166C] LU / RD Marking

题目描述

有一个纵向 HH 行、横向 WW 列的网格。

在这个网格中,有 H(W+1)H(W+1) 条纵向边和 W(H+1)W(H+1) 条横向边,总共有 H(W+1)+W(H+1)H(W+1) + W(H+1) 条边(请参考输入输出示例中的图)。

对于这些边,可以通过以下两种操作给边做标记:

  • 操作 (1):选择一个当前其左侧边和上侧边都没有被标记的格子。将该格子的左侧边和上侧边标记。
  • 操作 (2):选择一个当前其右侧边和下侧边都没有被标记的格子。将该格子的右侧边和下侧边标记。

操作 (1) 和操作 (2) 可以任意次(包括 00 次)进行。请你求出,最终可能出现的被标记的边的集合的种类数,结果对 998244353998244353 取模。

给定 TT 组测试数据,请分别输出每组的答案。

输入格式

输入以如下格式从标准输入读入:

TT
case1\text{case}_1
\vdots
caseT\text{case}_T

每组测试数据为一行:

HH WW

输出格式

请输出 TT 行,第 ii 行输出第 ii 组测试数据最终可能出现的被标记的边的集合的种类数,对 998244353998244353 取模。

样例 1

输入

2
1 1
2 3

输出

4
800

样例 2

输入

3
123 456
654 321
1000000 1000000

输出

60549740
298307903
656009181

说明/提示

约束条件

  • 1T2×1051 \leq T \leq 2 \times 10^5
  • 1H,W1061 \leq H, W \leq 10^6

样例解释 1

(H,W)=(1,1)(H, W) = (1, 1) 时,最终可能出现的被标记的边的集合有如下 44 种。被标记的边用粗线表示。

(H,W)=(2,3)(H, W) = (2, 3) 时,例如如下的边的集合是可能的

另一方面,下面这样的边的集合是不可能的

由 ChatGPT 4.1 翻译