#NK202509G. 排列
排列
题目描述
小猪 Pog 拥有一个长度为 的排列 。他打算进行恰好 次操作,构造一个新的序列 ,初始为空。
每次操作中,Pog 可以选择以下两种之一:
- 移除 一个 的最左端或最右端的一个元素。该元素不会加入 。
- 查询 当前 中的最小值,并将其追加到 的末尾。该操作不会修改 。
操作总次数必须恰好为 。
Pog 想知道,通过不同的操作顺序,一共可以得到多少种不同的序列 。
请输出该数量对 取模的结果。
输入格式
第一行包含一个整数 —— 测试数据组数。
每个测试数据由两行组成:
- 第一行包含一个整数 。
- 第二行包含 个整数 ,构成一个 的排列。
保证 。
输出格式
对于每组测试数据,输出一个整数,表示通过执行 次操作可以创建的不同序列 的数量,结果对 取模。
输入输出样例 #1
输入 #1
3
2
1 2
3
3 1 2
5
5 3 4 1 2
输出 #1
4
6
15
说明/提示
以下是第二个测试用例中所有可能答案的列表。
我们用 L、R 表示从左侧和右侧的 移除 操作,用 Q 表示 查询 操作。
- : L L L
- : L R Q
- : L L Q
- : R R Q
- : Q L Q
- : Q Q Q