#agc054e. [agc054_e]ZigZag Break

[agc054_e]ZigZag Break

题目描述

给定整数 NNAA。求满足以下条件的排列 P=(P1,P2,,PN)P=(P_1,P_2,\cdots,P_N) 的数量,取模 998244353998244353

  • P1=AP_1=A
  • 可以重复以下操作,直到 PP 只剩下两个元素。
    • 选择三个连续的元素 xxyyzz。这里,必须满足 y<min(x,z)y<\min(x,z) 或者 y>max(x,z)y>\max(x,z)。然后,将 yyPP 中删除。

解决输入文件中的 TT 个测试用例。

约束条件

  • 1T5×1051 \leq T \leq 5 \times 10^5
  • 3N1063 \leq N \leq 10^6
  • 1AN1 \leq A \leq N
  • 输入中的所有值都是整数。

输入

从标准输入读入数据,格式如下:

TT case1case_1 case2case_2 \vdots caseTcase_T

每个测试用例的格式如下:

NN AA

输出

对每个测试用例,输出答案。

示例输入 1

8
3 1
3 2
3 3
4 1
4 2
4 3
4 4
200000 10000

示例输出 1

1
2
1
3
5
5
3
621235018

N=4,A=2N=4, A=2 时,满足条件的一个排列为 P=(2,1,4,3)P=(2,1,4,3)。使其只剩下两个元素的一种方法如下。

  • 选择 (x,y,z)=(2,1,4)(x,y,z)=(2,1,4) 删除 11,结果是 P=(2,4,3)P=(2,4,3)
  • 选择 (x,y,z)=(2,4,3)(x,y,z)=(2,4,3) 删除 44,结果是 P=(2,3)P=(2,3)