시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 512 MB 0 0 0 0.000%

문제

이 문제에서 함수란 1부터 n까지의 정수와 1부터 n까지의 정수가 매핑되어 있는 함수를 의미한다. 예를 들어, n = 3인 경우에 가능한 함수 g의 한 예는 g(1) = 1, g(2) = 3, g(3) = 1이다.

fj(x)란 다음과 같이 정의되어 있다.

  • 올바른 x에 대해서, f0(x) = x
  • 올바른 x와 j에 대해서, fj+1(x) = fj(f(x))

다음과 같은 새로운 표현이 정의되어 있다.

  • G(f, w)는 1보다 크거나 같고, n보다 작거나 같은 x에 대해서, fr(x)값의 집합을 의미한다. 이때, r은 w보다 크거나 같아야 한다.
  • 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로 나눈 나머지를 구하는 프로그램을 작성하시오. 

입력

첫째 줄에 n과 k가 주어진다. (1 ≤ n ≤ 5,000)

출력

첫째 줄에 A(k)의 크기를 1,000,000,007로 나눈 나머지를 출력한다.

예제 입력 1

2 1

예제 출력 1

2

예제 입력 2

2 2

예제 출력 2

2

예제 입력 3

1 1

예제 출력 3

1

예제 입력 4

3 1

예제 출력 4

9

예제 입력 5

3 3

예제 출력 5

6

예제 입력 6

5 3

예제 출력 6

900

예제 입력 7

5000 5000

예제 출력 7

541108809

힌트

n = 2이기 때문에 총 4개의 함수를 만들 수 있고, 각각의 함수를 a, b, c, d라고 하면 다음과 같다.

  • a(1) = 1, a(2) = 1
  • b(1) = 1, b(2) = 2
  • c(1) = 2, c(2) = 1
  • d(1) = 2, d(2) = 2

a와 d는 A(1)에 포함되어 있고, b와 c는 A(2)에 포함되어 있다.

출처