被抓住的小竹
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

小竹正在和小胖激烈的玩着游戏,突然砰砰砰的敲门声响起。小竹走到猫眼面前一看,糟了!是妈妈。可是小竹还没说话小胖已经开了门。

妈妈看着偷跑的小竹十分气愤,于是她请来了小竹最好的朋友工口发动机出一道题折磨小竹,题目如下:

定义关于一个排列 p 的函数

其中的括号为艾弗森括号,若x表示的条件成立,则,否则

定义函数 inv(p) 为排列 p 的逆序对数量。

定义一个排列的价值:


现在给出一个 n,求出所有长度为 n 的排列的价值之和。

即求出:

其中S_p表示所有长度为n的排列所组成的集合。

考虑到答案可能很大,请将答案对 取模。

输入描述:

第一行一个正整数 

接下来 t 行,每行一个正整数

输出描述:

t行,每行一个整数,为所求式子的值。
示例1

输入

复制
2
2
3

输出

复制
5
135