주어진 N, m, 진법 l마다 자릿수 합을 N번 반복해야 l보다 작아지는 가장 작은 양의 정수를 구해 m으로 나눈 나머지를 출력합니다.
양의 정수 aaa에 대해, aaa를 lll진법으로 적었을 때 각 자리 숫자의 합을 S(a)S(a)S(a)라고 하자. 또 Sk(a)≤l−1S^k(a) \leq l-1Sk(a)≤l−1을 만족하는 가장 작은 kkk를 L(a)L(a)L(a)라고 하자. 여기서 S0(a)=aS^0(a) = aS0(a)=a이고, k≥1k \geq 1k≥1에 대해 Sk(a)=S(Sk−1(a))S^k(a) = S(S^{k-1}(a))Sk(a)=S(Sk−1(a))이다.
NNN이 주어지면 L(a)=NL(a) = NL(a)=N인 가장 작은 양의 정수 aaa를 구하고, 그 값을 mmm으로 나눈 나머지를 출력한다.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 세 정수 NNN, mmm, lll이 공백으로 구분되어 한 줄에 주어진다 (0≤N≤1050 \leq N \leq 10^50≤N≤105, 1≤m≤1091 \leq m \leq 10^91≤m≤109, 2≤l≤1092 \leq l \leq 10^92≤l≤109).
마지막 줄에는 0 0 0이 주어진다. 이 줄은 테스트 케이스가 아니다.
0 0 0
각 테스트 케이스마다 Case x: y 형식으로 한 줄씩 출력한다. xxx는 1부터 시작하는 테스트 케이스 번호이고, yyy는 조건을 만족하는 가장 작은 aaa를 mmm으로 나눈 나머지이다.
Case x: y