#P1151. 概括

概括

题目描述

Bob 对排列有严格的要求。

对于一个排列 pip_i,Bob 称一个元素 pip_i 是前缀最值,当且仅当对于所有的 j<ij<i,pjp_j 都小于 pip_i。Bob 定义 f(pi)f(p_i) 为 pip_i 中所有前缀最值组成的序列。例如 f([1,3,2,4])=[1,3,4]f([1,3,2,4]) = [1,3,4],f([4,3,2,1])=[4]f([4,3,2,1]) = [4]。

Bob 现在有一个序列 {ai}\{a_i\},他想知道,有多少个 1∼n1 \sim n 的排列 pip_i 使得 f(pi)=aif(p_i) = a_i。由于这样的排列可能很多,你只需要输出答案对 998244353998244353 取模的值。

输入格式

第一行一个整数 TT 表示询问组数。

接下来 TT 组询问:

每组询问第一行两个整数 n,kn,k,代表 {pi}\{p_i\} 的长度和 {ai}\{a_i\} 的长度。

接下来一行 kk 个整数,第 ii 个整数代表 aia_i。

输出格式

共 TT 行,每行一个整数,代表该组询问满足条件的排列数量对 998244353998244353 取模的值。

3
3 1
3
4 2
2 4
5 3
1 3 5
2
3
3

数据范围

对于 30%30\% 的数据,1≤k≤n≤91 \le k \le n \le 9,1≤∑n≤91 \le \sum n \le 9; 对于 60%60\% 的数据,1≤k≤n≤1031 \le k \le n \le 10^3,1≤∑n≤1031 \le \sum n \le 10^3; 对于 100%100\% 的数据,1≤T≤1051 \le T \le 10^5,1≤k≤n≤2⋅1051 \le k \le n \le 2 \cdot 10^5,1≤∑n≤2⋅1051 \le \sum n \le 2 \cdot 10^5,1≤a1<a2<…<ak=n1 \le a_1 < a_2 < \ldots < a_k = n。