题号:NC252716
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
Moonlight 最近迷上了冒泡排序。今天,他想动手试一试。
于是,氧气少年给了 MoonLight 一个长度为
)
的排列

,好让他练练手。
MoonLight 会不停地进行下面的操作,直到当前排列变成严格递增的排列:
-
选择一个最大的、不满足
的元素
,然后将其向后移动到位置
,其他元素保持原来的顺序不变。
上述过程可以用下面的伪代码表示:
现在,氧气少年不小心打乱了这个排列,每种排列出现的概率均等。
MoonLight 想知道,操作进行的轮数(也就是伪代码中

循环进行的轮数)的期望值。
可以证明,答案可以表示成

的形式。其中,
%3D1%2Cq%5Cmod%20998244353%5Cneq%200)
。因此你只需输出

即可。
输入描述:
第一行包含一个整数
,表示测试用例的组数。
对于每组测试用例:
仅输入一行,包含一个整数
,表示排列
的长度。
输出描述:
对于每组测试用例:
仅输出一行,包含一个整数,表示答案。