上升下降子序列
题号:NC201949
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

一个 的排列是好的当它可以被不重不漏地分成一个上升子序列和一个下降子序列(不是子串)。给定一个 ,问有多少个好的排列。

输入描述:

输入仅有一行,包含两个整数 ,
是质数)。

输出描述:

输出答案模  的余数。
示例1

输入

复制
4 998244353

输出

复制
22
示例2

输入

复制
3 998244353

输出

复制
6