금고를 열려면 $1$부터 $N$까지의 자연수를 정해진 비밀 순서대로 입력해야 합니다. 이 순서는 $1, 2, \dots, N$의 한 순열이며, 이 순열의 위수(order)가 정확히 $K$임을 당신은 확실히 알고 있습니다.
순열의 위수란 그 순열을 $m$번 적용했을 때 모든 원소가 처음 위치로 돌아오게 하는 가장 작은 양의 정수 $m$을 말합니다. 이는 순열을 이루는 각 순환(cycle) 길이들의 최소공배수와 같습니다. 예를 들어 코드 $2\ 3\ 1$의 위수는 $3$인데, $1 \to 3 \to 2 \to 1$, $2 \to 1 \to 3 \to 2$, $3 \to 2 \to 1 \to 3$이기 때문입니다.
위수를 알면 시도해야 할 코드의 개수를 크게 줄일 수 있으며, 당신은 그 개수를 정확히 알고 싶습니다. 소수 $P = 2^{31} - 1$보다 큰 수는 인정하지 않기로 했으므로, 그 개수를 $P$로 나눈 나머지로 답하세요. (예를 들어 개수가 $2^{31}$이면 $2^{31} \bmod P = 1$이 됩니다.)
$N$과 $K$가 주어질 때, ${1, \dots, N}$의 순열 중 위수가 정확히 $K$인 것의 개수를 $2^{31} - 1$로 나눈 나머지를 구하세요.
두 정수 $N$과 $K$가 한 줄에 주어집니다 ($1 \le N \le 100$, $1 \le K \le 2^{31} - 1$).
$N$개의 원소로 이루어진 순열 중 위수가 정확히 $K$인 것의 개수를 $2^{31} - 1$로 나눈 나머지를 정수 하나로 출력하세요.