【问题描述】
有一个长度为 n 的数组 a,初始时按照 1,2,…,n 排列,也就是 ai=i。
假设你有一个 1 到 n 的排列 p,也就是 pi 两两不同且恰好取尽 1 到 n 这 n 个数,定义一次变换为:对所有 1 到 n 之间的 i,令 ai=pai,那么在若干次变换之后,数组 a 会变回原始的 1,2,…,n,记最少需要的变换次数为 F(p)。请注意,至少需要进行一次变换,也就是对任意的 p 都有 F(p)≥1。
举例来说,设 n=6,p=2,3,1,5,4,6,初始时 a=1,2,3,4,5,6,由于 p1=2,所以每次变换会把 a 数组中的数字 1 变为 2,其它数字类似。
第一次变换,1 变为 2,2 变为 3,3 变为 1,4 变为 5,5 变为 4,6 不变,得到 a=2,3,1,5,4,6。
类似地,第二次变换得到 a=3,1,2,4,5,6,第三次变换得到 a=1,2,3,5,4,6,第四次变换得到 a=2,3,1,4,5,6,第五次变换得到 a=3,1,2,5,4,6,第六次变换得到 a=1,2,3,4,5,6,因此对于这个排列 p,最少的变换次数是 6,也就是 F(2,3,1,5,4,6)=6。
现在给定了 n,你需要求出对于所有 n! 种可能的排列 p,F(p) 有多少种不同值。
【输入格式】
一行一个正整数 n,表示数组的长度。
【输出格式】
一行一个正整数表示答案。
【输入样例】
3
【输出样例】
3
【样例解释】
三种可能性,变换 1 次,2 次或 3 次。
【数据规模和约定】
对于 30% 的数据,保证 1≤n≤10。
对于 100% 的数据,保证 1≤n≤1000。