팩토리얼의 합

N이 주어질 때 합이 N이 되는 팩토리얼 개수의 최솟값을 구한다. 같은 값은 여러 번 써도 된다.

보통5동적 계획법수학그리디면접 대비아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

양의 정수 NN의 팩토리얼은 N!N!으로 적고, NN보다 작거나 같은 모든 양의 정수의 곱으로 정의한다. 예를 들어 4!=4×3×2×1=244! = 4 \times 3 \times 2 \times 1 = 24이다.

양의 정수 NN이 주어진다. N=a1!+a2!++ak!N = a_1! + a_2! + \cdots + a_k!를 만족하는 가장 작은 kk를 구하는 프로그램을 작성하라. 각 aia_i는 양의 정수이고, 같은 값이 여러 번 나와도 된다.

N=10N = 10이면 답은 3이다. 10=3!+2!+2!10 = 3! + 2! + 2!로 팩토리얼 세 개의 합으로 쓸 수 있다. N=25N = 25이면 답은 2이다. 25=4!+1!25 = 4! + 1!이다.

입력

첫째 줄에 정수 NN이 주어진다. (1N1051 \le N \le 10^5)

출력

합이 NN이 되는 팩토리얼의 최소 개수를 한 줄에 출력한다.