이 문제에서 함수는 1부터 n까지의 정수를 1부터 n까지의 정수로 보내는 함수를 뜻한다. 예를 들어 n=3일 때 g(1)=1, g(2)=3, g(3)=1은 가능한 함수 g의 한 예이다.
fj(x)는 다음과 같이 정의한다.
- 모든 올바른 x에 대해 f0(x)=x
- 모든 올바른 x와 j에 대해 fj+1(x)=fj(f(x))
새로운 표현은 다음과 같이 정의한다.
- G(f,w)는 1≤x≤n인 x와 w 이상인 r에 대한 fr(x) 값의 집합이다.
- S(f,w)는 G(f,w)의 크기이다.
- Z(f)는 모든 음이 아닌 정수 w에 대한 S(f,w)의 최솟값이다.
- A(y)는 Z(f)=y인 함수 f의 집합이다.
n과 k가 주어졌을 때, A(k)의 크기를 1,000,000,007로 나눈 나머지를 구하는 프로그램을 작성하시오.