中位数
题号:NC295401
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

\hspace{15pt}给定一个整数 n,现在对于一个长度为 n 的排列 p_1,p_2,\dots,p_n,其价值 \operatorname{v}(p) 定义为:

\operatorname{v}(p)=\textstyle\prod\limits_{l=1}^{n}\textstyle\prod\limits_{r=l}^{n}\operatorname{mid}(l,r)

\hspace{15pt}现在,需要你求出所有 n! 种不同排列的价值的总乘积。由于答案可能很大,请将答案对 1\,610\,612\,741(TXT文本复制:1610612741)取模后输出。

【名词解释】
\hspace{15pt}\operatorname{mid}(l,r) 指的是区间 [l,r] \left \lceil \tfrac{r-l+1}{2} \right \rceil 的数值,例如:数组 \{1,2,3,4\} 中第 1 大是 4,第 2 大是 3,第 3 大是 2,第四大是 1,所以,这个数组的中位数是第 2 大的数,是 3
\hspace{15pt}长度为 n排列是由 1,2,\dots,nn 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,\{2,3,1,5,4\} 是一个长度为 5 的排列,而 \{1,2,2\}\{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

输入描述:

\hspace{15pt}第一行输入一个整数 n \left ( 1\leqq n\leqq 6\times 10^3 \right ),表示排列 p 的长度。

输出描述:

\hspace{15pt}输出一个整数,代表所有 n! 种不同排列的价值的总乘积。由于答案可能很大,请将答案对 1\,610\,612\,741 取模后输出。
示例1

输入

复制
2

输出

复制
16

说明

\hspace{15pt}在这个样例中,一共有 2!=2 种不同排列: 
\hspace{23pt}\bullet\,对于排列 p=\{1,2\},则对应的 \operatorname{v}(p)=1\times 2\times 2 = 4
\hspace{23pt}\bullet\,对于排列 p=\{2,1\},则对应的 \operatorname{v}(p)=2\times 1\times 2 = 4
\hspace{15pt}则最后总价值的乘积为 4\times 4=16
示例2

输入

复制
1000

输出

复制
1294676896